Example #1
0
        /// <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)));
        }
Example #3
0
        /// <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);
        }