public IEnumerable<Claim> Filter(IdentityProvider provider, IEnumerable<Claim> claims) { claims = NormalizeExternalClaimTypes(claims); claims = TransformSocialClaims(provider, claims); return claims; }
protected virtual IEnumerable<Claim> TransformSocialClaims(IdentityProvider provider, IEnumerable<Claim> claims) { if (provider.Name == FacebookProviderName) { claims = TransformFacebookClaims(claims); } else if (provider.Name == TwitterProviderName) { claims = TransformTwitterClaims(claims); } return claims; }
ExternalIdentity GetExternalIdentity(IEnumerable<Claim> claims) { if (claims == null || !claims.Any()) { return null; } var subClaim = claims.FirstOrDefault(x => x.Type == Constants.ClaimTypes.Subject); if (subClaim == null) { subClaim = claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier); if (subClaim == null) { return null; } } claims = claims.Except(new Claim[] { subClaim }); var idp = new IdentityProvider { Name = subClaim.Issuer }; if (this.externalClaimsFilter != null) { claims = externalClaimsFilter.Filter(idp, claims); } claims = claims ?? Enumerable.Empty<Claim>(); return new ExternalIdentity { Provider = idp, ProviderId = subClaim.Value, Claims = claims }; }