将ASP.NET Identity与OWIN auth集成到Azure AD B2C时,User.Identity.Name为null

将ASP.NET Identity与OWIN auth集成到Azure AD B2C时,User.Identity.Name为null,asp.net,asp.net-identity,claims-based-identity,azure-ad-b2c,Asp.net,Asp.net Identity,Claims Based Identity,Azure Ad B2c,我正在扩展一个使用ASP.NET身份验证的现有MVC web应用程序。它使用System.Web.HttpContext.Current.User.Identity.Name获取当前登录用户的用户名 当我使用示例代码切换到OWIN身份验证时,Name属性为null,导致现有应用程序抛出错误。是否可以更改IIdentity.Name的值而不使标识无效?如底部所述,您应该通过ClaimsPrincipal.Current对象访问用户声明,例如: // Controllers\HomeControll

我正在扩展一个使用ASP.NET身份验证的现有MVC web应用程序。它使用
System.Web.HttpContext.Current.User.Identity.Name
获取当前登录用户的用户名


当我使用示例代码切换到OWIN身份验证时,
Name
属性为null,导致现有应用程序抛出错误。是否可以更改
IIdentity.Name
的值而不使标识无效?

如底部所述,您应该通过
ClaimsPrincipal.Current
对象访问用户声明,例如:

// Controllers\HomeController.cs

[Authorize]
public ActionResult Claims()
{
    Claim displayName = ClaimsPrincipal.Current.FindFirst(ClaimsPrincipal.Current.Identities.First().NameClaimType);
    ViewBag.DisplayName = displayName != null ? displayName.Value : string.Empty;
    return View();
}

不确定,但如果您在应用程序声明中返回
显示名称
,则它将不再是
:)它将不再是
用户名
,尽管与您以前的情况相同。
System.Security.claims.ClaimsPrincipal.Current