我们正在尝试从Azure应用服务中托管的.Net Web App使用Azure AD(Active Directory密码身份验证)。但当应用尝试连接到Azure SQL数据库时,我们收到连接错误。
错误代码:
“/”应用程序中的服务器错误。该函数不熟悉生成服务器证书的证书颁发机构。说明:在执行当前Web请求期间发生了未处理的异常。有关此错误及其在代码中起源的详细信息,请查看堆栈跟踪。
异常详细信息:AdalException:函数不熟悉生成服务器证书的证书颁发机构。
错误代码:在执行当前Web请求期间生成了未处理的异常。有关异常的来源和位置的信息可以使用下面的异常堆栈跟踪来标识。堆栈跟踪:[AdalException:该函数不熟悉生成服务器证书的证书颁发机构。]
ADALNativeWrapper. ADALGetToken(String username,IntPtr password,String stsURL,String servicePrincipalName,ValueType correlationId,String clientId,Boolean* fWindowsIntegrated,Int64& fileTime)+867
ADALNativeWrapper. ADALGetToken(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.Task 1.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.Task
1.GetResultCore(Boolean waitCompletionNotification)+12771596
System.Threading.Tasks.Task 1.get_Result() +34 System.Data.SqlClient.<>c__DisplayClass134_1.<GetFedAuthToken>b__3() +41 System.Threading.Tasks.Task
1.Innerarche()+58 System.Threading.Tasks.Task.Execute()+48
1条答案
按热度按时间h5qlskok1#
我已经尝试用你在下面的实现中给出的相同的技术栈应用程序来重现你的问题:
1.在本地创建了.NET Core 6 Web应用程序,并在Azure门户中创建了Azure App Service + SQL数据库。
要使用.NET Core应用程序实现Azure AD密码身份验证的要求,您必须在两个方面进行一些更改。一个是应用程序代码,另一个是Azure门户端。
我是通过遵循 *TimBurris * 教程和GitHub的代码片段来做到这一点的。
这是我的应用代码文件夹结构:
x1c 0d1x的数据
代码文件配置:
Index.cshtml:
字符串
ProductService.cs
型
appsettings.json:
型
产品.cs
型
Azure Portal中的配置:
运行下面的脚本在SQL数据库中创建一些数据:
型
1.转到Microsoft Entra ID -应用程序注册-使用端点新建:
https://kamnetcoresqlapp572.azurewebsites.net/signin-oidc
launchSettings.json
复制到App Registration Endpoints:的
从同一应用程序注册菜单中,转到企业应用程序,您必须在其中添加用户,如下所示:
的
结果:
1.生成解决方案并将其发布到Azure Web App。
1.复制Azure Web App URL并在浏览器中打开它,它将要求您提供用户邮件ID和密码,并授予访问权限,如下面的屏幕截图所示:
的
1.选中同意框并接受,它将带您进入代码中定义的结果页面。