コード例 #1
0
        protected override IClaimsIdentity GetOutputClaimsIdentity(IClaimsPrincipal principal, RequestSecurityToken request, Scope scope)
        {
            if (null == principal)
            {
                throw new ArgumentNullException("principal");
            }

            var name   = principal.FindClaims(ClaimTypes.Name).First().Value;
            var nameId = new Claim(ClaimTypes.NameIdentifier, name);

            var userClaims = new List <Claim>
            {
                new Claim(ClaimTypes.Name, name),
                nameId,
                new Claim(ClaimTypes.AuthenticationMethod, principal.FindClaims(ClaimTypes.AuthenticationMethod).First().Value),
                new Claim(ClaimTypes.AuthenticationInstant, XmlConvert.ToString(DateTime.UtcNow, "yyyy-MM-ddTHH:mm:ss.fffZ"), ClaimValueTypes.Datetime),
                new Claim(ClaimTypes.Upn, principal.FindClaims(ClaimTypes.Upn).First().Value),
                new Claim(ClaimTypes.Sid, principal.FindClaims(ClaimTypes.Sid).First().Value),
            };

            userClaims.AddRange(principal.FindClaims(ClaimTypes.GroupSid));

            var outputIdentity = new ClaimsIdentity(userClaims);

            return(outputIdentity);
        }
コード例 #2
0
ファイル: TokenService.cs プロジェクト: highwaychurch/web
        public static List<Claim> GetOutputClaims(IClaimsPrincipal principal, RequestDetails requestDetails, IUserRepository userRepository)
        {
            var name = principal.FindClaims(ClaimTypes.Name).First().Value;
            var nameId = new Claim(ClaimTypes.NameIdentifier, name);

            var userClaims = new List<Claim>
            {
                new Claim(ClaimTypes.Name, name),
                nameId,
                new Claim(ClaimTypes.AuthenticationMethod, principal.FindClaims(ClaimTypes.AuthenticationMethod).First().Value),
                AuthenticationInstantClaim.Now
            };

            userClaims.AddRange(userRepository.GetClaims(principal, requestDetails));

            return userClaims;
        }
コード例 #3
0
        public static List <Claim> GetOutputClaims(IClaimsPrincipal principal, RequestDetails requestDetails, IClaimsRepository claimsRepository)
        {
            var name   = principal.FindClaims(ClaimTypes.Name).First().Value;
            var nameId = new Claim(ClaimTypes.NameIdentifier, name);

            var userClaims = new List <Claim>
            {
                new Claim(ClaimTypes.Name, name),
                nameId,
                new Claim(ClaimTypes.AuthenticationMethod, principal.FindClaims(ClaimTypes.AuthenticationMethod).First().Value),
                AuthenticationInstantClaim.Now
            };

            userClaims.AddRange(claimsRepository.GetClaims(principal, requestDetails));

            return(userClaims);
        }
コード例 #4
0
        /// <summary>
        /// Finds all instances of the specified claim.
        /// </summary>
        /// <param name="principal">The principal.</param>
        /// <param name="claimType">Type of the claim.</param>
        /// <returns>A list of claims that match the search criteria.</returns>
        public static IEnumerable <Claim> FindClaims(this IClaimsPrincipal principal, string claimType)
        {
            Contract.Requires(principal != null);
            Contract.Requires(!String.IsNullOrEmpty(claimType));
            Contract.Ensures(Contract.Result <IEnumerable <Claim> >() != null);


            return(principal.FindClaims(c =>
                                        c.ClaimType.Equals(claimType, StringComparison.OrdinalIgnoreCase)));
        }
コード例 #5
0
        /// <summary>
        /// Finds all instances of the specified claim.
        /// </summary>
        /// <param name="principal">The principal.</param>
        /// <param name="claim">The claim.</param>
        /// <returns>A list of claims that match the search criteria.</returns>
        public static IEnumerable <Claim> FindClaims(this IClaimsPrincipal principal, Claim claim)
        {
            Contract.Requires(principal != null);
            Contract.Requires(claim != null);
            Contract.Ensures(Contract.Result <IEnumerable <Claim> >() != null);


            return(principal.FindClaims(c =>
                                        c.ClaimType.Equals(claim.ClaimType, StringComparison.OrdinalIgnoreCase) &&
                                        c.Value.Equals(claim.Value, StringComparison.OrdinalIgnoreCase) &&
                                        c.Issuer.Equals(claim.Issuer, StringComparison.OrdinalIgnoreCase)));
        }
コード例 #6
0
        /// <summary>
        /// Demands a specific claim.
        /// </summary>
        /// <param name="principal">The principal.</param>
        /// <param name="predicate">The search predicate.</param>
        public static void DemandClaim(this IClaimsPrincipal principal, Predicate <Claim> predicate)
        {
            Contract.Requires(principal != null);
            Contract.Requires(predicate != null);


            foreach (Claim claim in principal.FindClaims(predicate))
            {
                return;
            }

            throw new SecurityException("Demand for Claim failed.");
        }
コード例 #7
0
        /// <summary>
        /// Tries to retrieve the value of a claim.
        /// </summary>
        /// <param name="principal">The principal.</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 IClaimsPrincipal principal, string claimType, out string claimValue)
        {
            Contract.Requires(principal != null);
            Contract.Requires(principal.Identities != null);
            Contract.Requires(!String.IsNullOrEmpty(claimType));


            claimValue = null;
            Claim claim = principal.FindClaims(claimType).FirstOrDefault();

            if (claim != null)
            {
                claimValue = claim.Value;
                return(true);
            }

            return(false);
        }
コード例 #8
0
ファイル: ClaimsTransformer.cs プロジェクト: nordseth/blog
        private static string GetUniqueId(IClaimsPrincipal incomingPrincipal)
        {
            // create unique id claim

            var nameId = incomingPrincipal.FindClaims(claim => claim.ClaimType == ClaimTypes.Name || claim.ClaimType == ClaimTypes.NameIdentifier).FirstOrDefault();
            var idp = incomingPrincipal.FindClaims(Constants.ClaimTypes.IdP).FirstOrDefault();

            if (idp != null && nameId != null)
            {
                return string.Format("{0}\\{1}", idp.Value, nameId.Value);
            }
            else
            {
                throw new Exception("No Unique ID");
            }
        }