【发布时间】:2020-11-23 19:40:14
【问题描述】:
我正在开发一个 .NET Core 3.1 MVC 应用程序,然后将其发布到 Azure Web 应用程序。在 Azure 门户中,对于这个托管的应用程序 -> 我使用 AzureAD 登录启用了应用程序服务身份验证。但是随后身份验证不起作用,因为“User.Identity.IsAuthenticated”在控制器中始终为假,我无法获取我想要的其他用户详细信息,例如电子邮件等。搜索后我发现有一种解决方法使用>Net Core 2.2 (https://github.com/MaximRouiller/MaximeRouiller.Azure.AppService.EasyAuth) 的 Nuget 包,但我没有看到 3.1 的任何解决方案。
但是,当我通过禁用 Azure 中的应用服务身份验证来设置自定义身份验证,并在 Startup.cs 中设置身份验证时,如下所示:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme).AddAzureAD(options => Configuration.Bind("AzureAd", options));
还有这个:
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints => ...
使用 appsettings.json 中的配置,身份验证工作正常,我也可以获取用户详细信息。
但我们首选的解决方案是在代码中不包含任何身份验证设置/自定义身份验证,而是使用带有 .NET Core 3.1 MVC 应用程序的 Azure AD Easy Auth 在门户上完全处理它。非常感谢任何帮助。
【问题讨论】:
-
您的解决方法是否肯定会带来安全的应用程序?这种方法在本地开发过程中如何发挥作用?您可以在本地进行调试,还是每次想要测试更改时都只能发布到 Azure?
标签: azure azure-active-directory asp.net-core-mvc asp.net-core-3.1 easy-auth