【问题标题】:Token-based authentication support for Azure SQL DB using Azure AD auth使用 Azure AD auth 对 Azure SQL DB 的基于令牌的身份验证支持
【发布时间】:2020-04-08 21:01:55
【问题描述】:

根据这个页面。

https://docs.microsoft.com/en-us/archive/blogs/sqlsecurity/token-based-authentication-support-for-azure-sql-db-using-azure-ad-auth

仅当客户端在 Windows 环境下时,才支持基于 AAD 令牌的身份验证来访问 Azure SQL DB。

MacOS 和 Linux 能否支持基于 AAD 令牌的身份验证来访问 Azure SQL DB?

https://github.com/mkleehammer/pyodbc/issues/228

    token = context.acquire_token_with_client_credentials(
        database_url,
        azure_client_id,
        azure_client_secret
    )
    print(token)

    tokenb = bytes(token["accessToken"], "UTF-8")
    exptoken = b''
    for i in tokenb:
        exptoken += bytes({i})
        exptoken += bytes(1)
    tokenstruct = struct.pack("=i", len(exptoken)) + exptoken
    tokenstruct

    SQL_COPT_SS_ACCESS_TOKEN = 1256
    CONNSTRING = "DRIVER={};SERVER={};DATABASE={}".format("ODBC Driver 17 for SQL Server", prod_server, prod_db)

    db_connector = pyodbc.connect(CONNSTRING, attrs_before={SQL_COPT_SS_ACCESS_TOKEN: tokenstruct})

这是我在MacOS下运行的代码,是python。

我不断收到这个问题

pyodbc.InterfaceError: ('28000', "[28000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Login failed for user ''. (18456) (SQLDriverConnect)")

有人有想法吗?

【问题讨论】:

    标签: azure azure-active-directory azure-sql-database


    【解决方案1】:

    您似乎尚未将应用程序服务主体添加到您的 Azure SQL 数据库中。

    你需要做的是:

    1。为 Azure SQL Server 启用 AAD 身份验证。请在此步骤中选择 AAD 用户。

    2。使用您在步骤 1 中设置的用户帐户连接到您的 Azure SQL 数据库。

    3。将您的应用程序服务主体添加到您的 SQL Server,并向其提醒适当的角色。

    CREATE USER [Azure_AD_principal_name] FROM EXTERNAL PROVIDER;
    EXEC sp_addrolemember 'db_owner', 'Azure_AD_principal_name';
    

    这里,Azure_AD_principal_name 应该是应用程序的名称。

    4。使用 AAD 连接到 Azure SQL 数据库

    【讨论】:

    • 顺便说一句,您可以创建一个 AAD 组,并将用户或其他服务主体添加到该组。然后将组服务主体添加到您的 SQL Server。这样,该组的所有成员都将能够连接到您的 SQL。
    • 我如何知道客户端 ID 和密码?
    猜你喜欢
    • 2020-04-23
    • 2018-05-10
    • 2019-03-13
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    相关资源
    最近更新 更多