azure - 尝试使 AAD 和 Azure SQL 身份验证正常工作
问题描述
我正在尝试在我的应用程序和 azure SQL 之间实现集成身份验证。该应用程序在已加入 IIS 上的 Azure AD 域(域服务)的 VM 上运行。
我已按照有关设置身份验证的官方 MS 文档: https ://docs.microsoft.com/en-us/azure/sql-database/sql-database-aad-authentication-configure (注意 - 我们没有使用托管实例对于 SQL)。
1) 管理员组已通过门户添加 2) 已根据文档创建包含的数据库用户(也是管理员组的一部分)。3) IIS 应用程序池也以同一用户身份运行。
尝试连接到该站点会返回此错误:
[AdalException: Integrated Windows authentication supported only in federation flow.]
ADALNativeWrapper.ADALGetAccessToken(String username, IntPtr password, String stsURL, String servicePrincipalName, ValueType correlationId, String clientId, Boolean* fWindowsIntegrated, Int64& fileTime) +829
System.Data.SqlClient.<>c__DisplayClass2_0.<AcquireTokenAsync>b__0() +132
System.Threading.Tasks.Task`1.InnerInvoke() +121
System.Threading.Tasks.Task.Execute() +47
[AggregateException: One or more errors occurred.]
System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) +4323177
System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification) +12865803
System.Threading.Tasks.Task`1.get_Result() +33
System.Data.SqlClient.<>c__DisplayClass134_1.<GetFedAuthToken>b__0() +39
System.Threading.Tasks.Task`1.InnerInvoke() +121
System.Threading.Tasks.Task.Execute() +47
[AggregateException: One or more errors occurred.]
我们的 web.config 使用它作为连接字符串:
name="LocalSqlServer" connectionString="Server=tcp:XXXXX;Initial Catalog=XXXXX;Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication='Active Directory Integrated';" />
我们希望能够在我们的 web.config 中删除任何对纯文本密码的提及,并且 azure 身份验证应该能够提供这一点。
任何帮助,将不胜感激!
编辑:为了重新开始,我将应用程序迁移到另一个新的 Azure VM。这次,该过程最初导致此错误:
Unable to load adalsql.dll (Authentication=ActiveDirectoryPassword). Error code: 0x2.
安装 .dll 后,它会导致我出现上面发布的相同错误。不确定这个初始错误是否可以揭示潜在问题。
解决方案
错误消息是“仅在联合流中支持集成 Windows 身份验证”
从门户中,如果您选择“Azure Active Directory”,然后选择“自定义域名”
您是否在列表中选择了“主要”一行?
如果是这种情况,您可以尝试添加一个新的自定义域,将其标记为联合,然后使用该域中的用户进行集成身份验证。
推荐阅读
- node.js - 如何使用 mongoose 和 nodejs 删除嵌套在 Post 模式中的评论?
- html - 无法为端点构建 url 您的意思是 ' 吗?
- java - 显示正确视图的 xml
- blogger - 如果没有featuredImage博主,如何包含图片网址?
- c# - 使用标签 Unity 查找并返回最近的游戏对象
- python - 更新字典列表中的空字典会更改列表的所有元素
- java - 如果将异常传递给 Java 的 `System.out.println`,会发生什么?
- python - Python加速csv操作
- node.js - TypeError:无法读取未定义的属性'get',如何?
- javascript - 如何从 nightwatch.js 中的函数式命令返回值