我正在使用
aioodbc
连接到 Azure SQL Server。
我想通过
accessToken
来验证 SQL 服务器而不是管理员用户/密码。
我看到一些链接
PyOdbc
支持在创建连接时传递accessToken。 aioodbc 也有类似的吗?
我已经关注了这篇文章(如果您想传递 accessToken ) - 请查看 https://techcommunity.microsoft.com/t5/apps-on-azure-blog/how-to-connect-azure-sql-database -来自-python-function-app-using/ba-p/3035595
使用 msal 创建访问令牌:
authority = f'https://login.microsoftonline.com/{APP_TENANT_ID}'
scope = ['https://database.windows.net//.default']
app = msal.ConfidentialClientApplication(APP_CLIENT_ID, authority=authority, client_credential=client_secret)
token_response = app.acquire_token_for_client(scopes=scope)
access_token = token_response.get('access_token')
将该访问令牌转换为可在 Pyodbc connect 中使用
exptoken = b''
for i in bytes(access_token, "UTF-8"):
exptoken += bytes({i})
exptoken += bytes(1)
tokenstruct = struct.pack("=i", len(exptoken)) + exptoken
async with aioodbc.connect(dsn=conn_str, attrs_before={ SQL_COPT_SS_ACCESS_TOKEN:tokenstruct }) as conn: