public static SessionSecurityToken GetSessionSecurityToken( this WSFederationAuthenticationModule fam, HttpContext context, out string identityProvider, out string userName, out string email, out string displayName, string emailClaimType = DefaultEmailClaimType, string displayNameClaimType = DefaultDisplayNameClaimType, string identityProviderClaimType = DefaultIdentityProviderClaimType) { var principal = fam.GetClaimsPrincipal(context); var sessionSecurityToken = new SessionSecurityToken(principal); userName = principal.Identity.Name; Func <string, string> find = claimType => !string.IsNullOrWhiteSpace(claimType) ? principal.Identities .SelectMany(identity => identity.Claims) .Where(claim => string.Equals(claim.ClaimType, claimType, StringComparison.OrdinalIgnoreCase)) .Select(claim => claim.Value) .FirstOrDefault() : null; identityProvider = find(identityProviderClaimType); email = find(emailClaimType); displayName = find(displayNameClaimType); return(sessionSecurityToken); }