System.Security.Claims.ClaimsPrincipal.FindFirst C# (CSharp) 메소드

FindFirst() 공개 메소드

public FindFirst ( string type ) : System.Security.Claims.Claim
type string
리턴 System.Security.Claims.Claim
        public virtual System.Security.Claims.Claim FindFirst(string type) { throw null; }
        public virtual bool HasClaim(System.Predicate<System.Security.Claims.Claim> match) { throw null; }

Same methods

ClaimsPrincipal::FindFirst ( Predicate match ) : Claim
ClaimsPrincipal::FindFirst ( string type ) : Claim
ClaimsPrincipal::FindFirst ( System match ) : System.Security.Claims.Claim

Usage Example

        /// <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));
            }
        }
All Usage Examples Of System.Security.Claims.ClaimsPrincipal::FindFirst