本文整理汇总了C#中System.Security.Claims.ClaimsPrincipal.GetDisplayNameValue方法的典型用法代码示例。如果您正苦于以下问题:C# ClaimsPrincipal.GetDisplayNameValue方法的具体用法?C# ClaimsPrincipal.GetDisplayNameValue怎么用?C# ClaimsPrincipal.GetDisplayNameValue使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Security.Claims.ClaimsPrincipal
的用法示例。
在下文中一共展示了ClaimsPrincipal.GetDisplayNameValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: NormalizeClaims
/// <summary>
/// Transforms the claims from AAD to well-known claims.
/// </summary>
/// <param name="principal">The current <see cref="System.Security.Claims.ClaimsPrincipal"/></param>
private static void NormalizeClaims(ClaimsPrincipal principal)
{
Guard.ArgumentNotNull(principal, nameof(principal));
var identity = principal.Identities.First();
if (!identity.IsAuthenticated)
{
throw new InvalidOperationException("The supplied principal is not authenticated.");
}
var email = principal.FindFirst(ClaimTypes.Upn)?.Value;
if (!string.IsNullOrWhiteSpace(email))
{
identity.AddClaim(new Claim(ClaimTypes.Email, email));
}
var name = principal.GetDisplayNameValue();
if (!string.IsNullOrWhiteSpace(name))
{
// It looks like AAD does something strange here, but it's actually the JwtSecurityTokenHandler making assumptions
// about the claims from AAD. It takes the unique_name claim from AAD and maps it to a ClaimTypes.Name claim, which
// is the default type for a name claim for our identity. If we don't remove the old one, there will be two name claims,
// so let's get rid of the first one.
var previousNameClaim = principal.FindFirst(ClaimTypes.Name);
if (previousNameClaim != null)
{
identity.RemoveClaim(previousNameClaim);
}
identity.AddClaim(new Claim(identity.NameClaimType, name));
}
}