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); }
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; }
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); }
/// <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))); }
/// <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))); }
/// <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."); }
/// <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); }
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"); } }