You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Active Directory集成式身份验证连接SQL托管实例IIS应用失败排查及解决

IIS应用Azure AD集成认证连接SQL托管实例失败的问题分析与解决

问题回顾

你已经完成了以下配置:

  • 在Azure虚拟机上部署了ADFS服务,同时创建了SQL托管实例
  • 域已完成联合配置,并且可以通过SSMS使用Azure AD集成式身份验证成功连接SQL托管实例
    但当IIS应用使用以下连接字符串尝试连接时出现错误:
string ConnectionString = @"Data Source=XXXXXXXXX; Authentication=Active Directory Integrated; Initial Catalog=testdb;"

错误信息如下:

消息 -> 发生一个或多个错误。
内部异常 -> System.AggregateException: 发生一个或多个错误。 ---> AdalException: MSIS7069: 指定的请求失败。
在 ADALNativeWrapper.ADALGetAccessToken(String username, IntPtr password, String stsURL, String servicePrincipalName, ValueType correlationId, String clientId, Boolean* fWindowsIntegrated, Int64& fileTime)
在 System.Data.SqlClient.ActiveDirectoryNativeAuthenticationProvider.<>c__DisplayClass2_0.b__0()
在 System.Threading.Tasks.Task1.InnerInvoke() 在 System.Threading.Tasks.Task.Execute() --- 内部异常堆栈跟踪结束 --- 在 System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotification)
在 System.Data.SqlClient.SqlInternalConnectionTds.<>c__DisplayClass134_1.b__0()
在 System.Threading.Tasks.Task1.InnerInvoke() 在 System.Threading.Tasks.Task.Execute() ---> (内部异常 #0) AdalException: MSIS7069: 指定的请求失败。 在 ADALNativeWrapper.ADALGetAccessToken(String username, IntPtr password, String stsURL, String servicePrincipalName, ValueType correlationId, String clientId, Boolean* fWindowsIntegrated, Int64& fileTime) 在 System.Data.SqlClient.ActiveDirectoryNativeAuthenticationProvider.<>c__DisplayClass2_0.b__0() 在 System.Threading.Tasks.Task1.InnerInvoke()
在 System.Threading.Tasks.Task.Execute()<---

同时ADFS服务器的Admin日志中记录了事件ID 111的错误:

日志名称: AD FS/Admin
来源: AD FS
日期: 2021年7月29日 12:26:45
事件ID: 111
任务类别: 无
级别: 错误
关键字: AD FS
用户: Domain\testuser
计算机: 我们的ADFS服务器名称(因数据敏感未提及确切名称)
描述: 联合服务处理WS-Trust请求时遇到错误。
请求类型: http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue
附加数据
异常详细信息: Microsoft.IdentityServer.Service.SecurityTokenService.ADAccountValidationException: MSIS3173: Active Directory账户验证失败。 ---> Microsoft.IdentityServer.ClaimsPolicy.Engine.AttributeStore.Ldap.AttributeStoreDSGetDCFailedException: 引发了“Microsoft.IdentityServer.ClaimsPolicy.Engine.AttributeStore.Ldap.AttributeStoreDSGetDCFailedException”类型的异常。

关于联合域的疑问解答(编辑1)

针对你问的客户端机器域的问题:客户端使用的域不需要是Azure AD的主域,只要该域在Azure AD的自定义域列表中且已完成联合配置即可。域内的合法用户就能通过Azure AD集成认证访问相关资源。

最终解决方案(编辑2)

你找到的解决方案完全正确,问题的核心在于IIS应用池的身份配置:

  • 默认的ApplicationPoolIdentity是本地虚拟账户,它不属于你的联合域,无法完成ADFS的域身份验证流程,导致获取AccessToken失败,进而引发MSIS7069错误。
  • 将应用池的身份改为有SQL托管实例访问权限的域用户后,应用就能以该域用户的身份完成Azure AD集成认证,成功连接到SQL托管实例。

快速操作指引:

  1. 打开IIS管理器,定位到目标应用对应的应用池
  2. 右键点击应用池,选择「高级设置」
  3. 在「进程模型」区域找到「标识」选项,点击右侧的「...」按钮
  4. 选择「自定义账户」,点击「设置」,输入有权限的域用户账户和密码
  5. 重启应用池和对应的网站,再次测试连接即可

内容的提问来源于stack exchange,提问作者shubham singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 23:22:35