为Azure SQL Server获取Azure AD令牌

时间:2016-08-09 23:40:03

标签: c# azure authentication azure-active-directory azure-sql-database

我正在尝试开发一个使用证书通过AD进行身份验证的Web应用程序,然后获取一个令牌以连接到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>"

但我总是得到

  

{&#34; AADSTS50001:在名为tenantname.onmicrosoft.com的租户中找不到名为https://databasename.database.windows.net/的应用程序。如果租户的管理员尚未安装应用程序或租户中的任何用户同意该应用程序,则会发生这种情况。您可能已将您的身份验证请求发送给错误的租户。\ r \ nTrace ID:\ r \ n相关ID:\ r \ n时间戳:2016-08-09 23:35:38Z&#34;}

当我使用https://graph.windows.net/作为sqlDBResourceId时,我能够收到令牌。那么也许我还没有正确设置我的tenant-directory-domain-db关系?任何关于从哪里开始的建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

https://database.windows.net/,因为sqlDBResourceId是正确的答案 谢谢 米雷克