Example #1
0
        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;
        }