/// <summary> /// Retrieves the issuer name of an IClaimsIdentity. /// The algorithm checks the name claim first, and if no name is found, the first claim. /// </summary> /// <param name="identity">The identity.</param> /// <returns>The issuer name</returns> public static string GetIssuerName(this IClaimsIdentity identity) { Contract.Requires(identity != null); Contract.Requires(identity.Claims != null); Contract.Ensures(Contract.Result <string>() != null); // first try the name claim var claim = identity.FindClaims(WSIdentityConstants.ClaimTypes.Name).FirstOrDefault(); if (claim != null) { if (claim.Issuer != null) { return(claim.Issuer); } } // then try the first claim if (identity.Claims.Count > 0) { claim = identity.Claims[0]; if (claim != null) { if (claim.Issuer != null) { return(claim.Issuer); } } } // empty or exception? return(""); }
public static IEnumerable <Claim> FindClaims(this IClaimsIdentity identity, string claimType) { Contract.Requires(identity != null); Contract.Requires(identity.Claims != null); Contract.Requires(!String.IsNullOrEmpty(claimType)); Contract.Ensures(Contract.Result <IEnumerable <Claim> >() != null); return(identity.FindClaims(c => c.ClaimType.Equals(claimType, StringComparison.OrdinalIgnoreCase))); }
/// <summary> /// Checks whether a given claim exists /// </summary> /// <param name="identity">The identity.</param> /// <param name="predicate">The search predicate.</param> /// <returns>true/false</returns> public static bool ClaimExists(this IClaimsIdentity identity, Predicate <Claim> predicate) { Contract.Requires(identity != null); Contract.Requires(identity.Claims != null); Contract.Requires(predicate != null); Claim claim = identity.FindClaims(predicate).FirstOrDefault(); return(claim != null); }
public static IEnumerable <Claim> FindClaims(this IClaimsIdentity identity, Claim claim) { Contract.Requires(identity != null); Contract.Requires(identity.Claims != null); Contract.Requires(claim != null); Contract.Ensures(Contract.Result <IEnumerable <Claim> >() != null); return(identity.FindClaims(c => c.ClaimType.Equals(claim.ClaimType, StringComparison.OrdinalIgnoreCase) && c.Value.Equals(claim.Value, StringComparison.OrdinalIgnoreCase) && c.Issuer.Equals(claim.Issuer, StringComparison.OrdinalIgnoreCase))); }
/// <summary> /// Tries to retrieve the value of a claim. /// </summary> /// <param name="identity">The identity.</param> /// <param name="claimType">Type of the claim.</param> /// <param name="claimValue">The claim value.</param> /// <returns>The value</returns> public static bool TryGetClaimValue(this IClaimsIdentity identity, string claimType, out string claimValue) { Contract.Requires(identity != null); Contract.Requires(identity.Claims != null); Contract.Requires(identity.Claims != null); Contract.Requires(!String.IsNullOrEmpty(claimType)); claimValue = null; Claim claim = identity.FindClaims(claimType).FirstOrDefault(); if (claim != null) { claimValue = claim.Value; return(true); } return(false); }