获取Azure SQL Server的Azure AD令牌

本文关键字:Azure AD 令牌 Server SQL 获取 | 更新日期: 2023-09-27 18:01:30

我正在尝试开发一个web应用程序,使用证书与AD进行身份验证,然后获取令牌连接到SQL Azure DB。

我遵循了https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication/和https://github.com/Azure-Samples/active-directory-dotnet-daemon-certificate-credential中的所有步骤,除了我使用这里的代码示例- https://blogs.msdn.microsoft.com/sqlsecurity/2016/02/09/token-based-authentication-support-for-azure-sql-db-using-azure-ad-auth/

一切都很顺利,直到我到达那一行

result = await authContext.AcquireTokenAsync(sqlDBResourceId, certCred);

我不太确定sqlDBResourceId该放什么,我试过了

"https://<databasename>.database.windows.net/"
"https://<databasename>.windows.net/"
"<databasename>"

但是我总是得到

{"AADSTS50001:名为https://databasename.database.windows.net/的应用程序在名为tenantname.onmicrosoft.com的租户中找不到。如果租户的管理员没有安装应用程序,或者租户中的任何用户都没有同意应用程序,就会发生这种情况。您可能将身份验证请求发送给了错误的承租者。'r'nTrace ID: 'r'nCorrelation ID: 'r'nTimestamp: 2016-08-09 23:35:38Z"}

当我使用https://graph.windows.net/作为sqlDBResourceId时,我能够收到令牌。也许我没有正确设置租户-目录-域-数据库关系?如果你能告诉我从哪里开始,我将不胜感激。

获取Azure SQL Server的Azure AD令牌

Jack Zeng是正确的-不要试图在代码示例中混淆默认资源字符串,只需使用https://database.windows.net/.

https://database.windows.net/,因为sqlDBResourceId是正确答案谢谢Mirek