如何使用aioodbc库传递AAD AccessToken来验证SQL Server?

问题描述 投票:0回答:1

我正在使用

aioodbc
连接到 Azure SQL Server。

我想通过

accessToken
来验证 SQL 服务器而不是管理员用户/密码。

我看到一些链接

PyOdbc
支持在创建连接时传递accessToken。 aioodbc 也有类似的吗?

pyodbc aioodbc
1个回答
0
投票

我已经关注了这篇文章(如果您想传递 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:
© www.soinside.com 2019 - 2024. All rights reserved.