1

我正在开发一个 .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 在门户上完全处理它。非常感谢任何帮助。

4

1 回答 1

1

这是 EasyAuth 和 .NET Core 的已知限制,如文档所述。用户主体在 .NET Core 中的实现方式不同,EasyAuth 无法像在 .NETFX 中那样自动获取这些细节。这就是为什么您需要使用 Maxime 的解决方法。

于 2020-08-21T01:22:23.973 回答