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

.Net Web App(Azure App Service托管)Azure AD密码认证连接Azure SQL报错

问题描述

我们正尝试在Azure App Service托管的.Net Web App中使用Azure AD(Active Directory密码认证)连接Azure SQL Database,但出现连接错误。

错误信息

应用程序中的服务器错误。该函数不熟悉生成服务器证书的证书颁发机构。
说明: 执行当前Web请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中错误来源的详细信息。
异常详细信息: AdalException: 该函数不熟悉生成服务器证书的证书颁发机构。
源错误: 执行当前Web请求期间生成了未处理的异常。可使用下面的堆栈跟踪信息确定异常的来源和位置。
堆栈跟踪:
[AdalException: The function is unfamiliar with the Certificate Authority that generated the server's certificate.]
ADALNativeWrapper.ADALGetAccessToken(String username, IntPtr password, String stsURL, String servicePrincipalName, ValueType correlationId, String clientId, Boolean* fWindowsIntegrated, Int64& fileTime) +867
ADALNativeWrapper.ADALGetAccessToken(String username, String password, String stsURL, String servicePrincipalName, ValueType correlationId, String clientId, Int64& fileTime) +105
System.Data.SqlClient.<>c__DisplayClass2_0.b__0() +371
System.Threading.Tasks.Task1.InnerInvoke() +58 System.Threading.Tasks.Task.Execute() +48 [AggregateException: One or more errors occurred.] System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) +4316222 System.Threading.Tasks.Task1.GetResultCore(Boolean waitCompletionNotification) +12771596
System.Threading.Tasks.Task1.get_Result() +34 System.Data.SqlClient.<>c__DisplayClass134_1.<GetFedAuthToken>b__3() +41 System.Threading.Tasks.Task1.InnerInvoke() +58
System.Threading.Tasks.Task.Execute() +48

解决方案
  • 升级ADAL库版本:该错误多因使用的ADAL(Azure Active Directory Authentication Library)版本过旧,不兼容Azure SQL服务器证书的最新CA。将项目中Microsoft.IdentityModel.Clients.ActiveDirectory等ADAL相关NuGet包升级至最新稳定版。
  • 确认证书信任链:Azure App Service默认信任微软根CA,若为自定义运行环境,需手动将Azure SQL对应的根证书添加至应用信任存储。
  • 替换为MSAL库:ADAL已被MSAL(Microsoft Authentication Library)替代,MSAL对最新证书和认证流程支持更完善。将代码中的ADAL调用替换为Microsoft.Identity.Client包的相关逻辑,获取访问令牌后再用于SQL连接。
  • 校验连接字符串配置:确保连接字符串包含正确的Azure AD认证参数,示例格式如下:
    Server=tcp:{server-name}.database.windows.net,1433;Initial Catalog={db-name};Persist Security Info=False;User ID={aad-username};Password={aad-password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Authentication=Active Directory Password;
    
  • 调整App Service TLS版本:在Azure门户的App Service配置中,进入「TLS/SSL设置」,将最小TLS版本设置为1.2或更高,旧版TLS可能不兼容最新证书加密算法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:55:00