private static IClaimsPrincipal GetClaimsIdentity(RequestSecurityTokenResponse rstr) { var rstrXml = rstr.RequestedSecurityToken.SecurityTokenXml; var xnm = new XmlNamespaceManager(rstrXml.OwnerDocument.NameTable); xnm.AddNamespace(Microsoft.IdentityModel.Tokens.Saml2.Saml2Constants.Prefix, Microsoft.IdentityModel.Tokens.Saml2.Saml2Constants.Namespace); XNamespace ast = "urn:oasis:names:tc:SAML:2.0:assertion"; var xElement = ToXElement(rstrXml); var xAssertionElement = xElement.Element(ast + "Assertion"); if (xAssertionElement != null) { var xAttributeStatement = xAssertionElement.Element(ast + "AttributeStatement"); if (xAttributeStatement != null) { var xAttributes = xAttributeStatement.Elements(ast + "Attribute"); IClaimsIdentity claimsIdentity = new Microsoft.IdentityModel.Claims.ClaimsIdentity(); foreach (var element in xAttributes) { var claimType = element.Attribute("NameFormat") + "/" + element.Attribute("Name"); var value = element.Value; var xAttribute = element.Attribute("Name"); if (xAttribute != null && xAttribute.Value == "urn:FirstName") { claimsIdentity.Claims.Add(new Microsoft.IdentityModel.Claims.Claim(ClaimTypes.Name, element.Value)); } claimsIdentity.Claims.Add(new Microsoft.IdentityModel.Claims.Claim(claimType, value ?? "")); } var claimsIdentitycol = new ClaimsIdentityCollection(new[] { claimsIdentity }); return(Microsoft.IdentityModel.Claims.ClaimsPrincipal.CreateFromIdentities(claimsIdentitycol)); } } return(null); }
private static IClaimsPrincipal GetClaimsIdentity(RequestSecurityTokenResponse rstr) { var rstrXml = rstr.RequestedSecurityToken.SecurityTokenXml; var xnm = new XmlNamespaceManager(rstrXml.OwnerDocument.NameTable); xnm.AddNamespace(Microsoft.IdentityModel.Tokens.Saml2.Saml2Constants.Prefix, Microsoft.IdentityModel.Tokens.Saml2.Saml2Constants.Namespace); XNamespace ast = "urn:oasis:names:tc:SAML:2.0:assertion"; var xElement = ToXElement(rstrXml); var xAssertionElement = xElement.Element(ast + "Assertion"); if (xAssertionElement != null) { var xAttributeStatement = xAssertionElement.Element(ast + "AttributeStatement"); if (xAttributeStatement != null) { var xAttributes = xAttributeStatement.Elements(ast + "Attribute"); IClaimsIdentity claimsIdentity = new Microsoft.IdentityModel.Claims.ClaimsIdentity(); foreach (var element in xAttributes) { var claimType = element.Attribute("NameFormat") + "/" + element.Attribute("Name"); var value = element.Value; var xAttribute = element.Attribute("Name"); if (xAttribute != null && xAttribute.Value == "urn:FirstName") claimsIdentity.Claims.Add(new Microsoft.IdentityModel.Claims.Claim(ClaimTypes.Name, element.Value)); claimsIdentity.Claims.Add(new Microsoft.IdentityModel.Claims.Claim(claimType, value ?? "")); } var claimsIdentitycol = new ClaimsIdentityCollection(new[] { claimsIdentity }); return Microsoft.IdentityModel.Claims.ClaimsPrincipal.CreateFromIdentities(claimsIdentitycol); } } return null; }