如何在Azure Web App上托管的.NET Core中检索AD用户名?

时间:2019-05-22 11:36:23

标签: c# azure .net-core azure-active-directory windows-authentication

我已经使用HTTPContext.User.Identity.Name来获取当前用户名。它通过localhost运行,但在Azure Web App上返回null。

使用.Net Framework之前,HTTPContext.User.Identity.Name曾经起作用,但是现在我使用的是.Net Core,它不起作用。

当前代码:

private void SetUpUser()
{
    var identityName = HttpContext.User.Identity.Name;
    identityName = identityName.Replace("@example.com", "").Replace(".", "").Replace("example\\", "");
    string userName = identityName.Replace(".", "");
}

错误消息:

  

NullReferenceException:对象引用未设置为对象的实例。   HomeController.cs中的CommissionInputApp.Controllers.HomeController.SetUpUser()

1 个答案:

答案 0 :(得分:0)

您是否在OpenIdConnectOptions配置中设置了NameClaimType:

options.TokenValidationParameters = new TokenValidationParameters() { NameClaimType = "name" };

我没有创建自己的应用程序和Api,只是使用fabrikamb2cdomain作为代码示例提供的方法,即使.net core 2.2中某些方法已过时,例如cache.HasStateChanged。认证仍然有效,并使用User.Identity.Name,HttpContext.User.Claims设置正确的名称:

enter image description here

您还可以向我们提供更多详细信息和代码,以重现该问题。