public void SamlTest() { PvpToken token = new PvpToken(PvpVersion.Version21); token.Attributes.Add(new PvpAttributeUserId("*****@*****.**")); token.Attributes.Add(new PvpAttributeRoles("Test(A=1)")); string xml = token.GetSamlAttributeStatement().OuterXml; Assert.IsTrue(xml.StartsWith("<AttributeStatement ID=")); Assert.IsTrue(xml.EndsWith(" Version=\"2.0\" xmlns=\"urn:oasis:names:tc:SAML:2.0:assertion\"><Attribute Name=\"urn:oid:1.2.40.0.10.2.1.1.261.10\" FriendlyName=\"PVP-VERSION\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><AttributeValue>2.1</AttributeValue></Attribute><Attribute Name=\"urn:oid:0.9.2342.19200300.100.1.1\" FriendlyName=\"USERID\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><AttributeValue>[email protected]</AttributeValue></Attribute><Attribute Name=\"urn:oid:1.2.40.0.10.2.1.1.261.30\" FriendlyName=\"ROLES\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><AttributeValue>Test(A=1)</AttributeValue></Attribute></AttributeStatement>")); //var x="<AttributeStatement ID=\"_aeb030e8-055d-4618-b0df-b8a0dcc4dd60\" Version=\"2.0\" xmlns=\"urn:oasis:names:tc:SAML:2.0:assertion\"><Attribute Name=\"urn:oid:1.2.40.0.10.2.1.1.261.10\" FriendlyName=\"PVP-VERSION\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><AttributeValue>2.1</AttributeValue></Attribute><Attribute Name=\"urn:oid:0.9.2342.19200300.100.1.1\" FriendlyName=\"USERID\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><AttributeValue>[email protected]</AttributeValue></Attribute><Attribute Name=\"urn:oid:1.2.40.0.10.2.1.1.261.30\" FriendlyName=\"ROLES\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><AttributeValue>Test(A=1)</AttributeValue></Attribute></AttributeStatement>" }
public void ParseTokenTest() { NameValueCollection headers = GetNameValueCollection21(); PvpToken token = new PvpToken(headers); PvpToken parsedToken = new PvpToken(token.GetSamlAttributeStatement()); Assert.AreEqual(PvpVersion.Version21, parsedToken.Version); Assert.AreEqual("*****@*****.**", parsedToken.GetAttributeValue(PvpAttributes.USERID)); Assert.AreEqual("Beispielrolle(GKZ=60420);Beispielrolle2(ABC=XYZ, DEF=4711)", parsedToken.GetAttributeValue(PvpAttributes.ROLES)); foreach (HttpHeader header in parsedToken.GetHeaders()) { if (header.Name.Equals("X-PVP-roles", StringComparison.InvariantCultureIgnoreCase)) { continue; } Assert.AreEqual(headers[header.Name], header.Value, "Fehler bei " + header.Name); } }
public void ParseSamlValuesTest() { NameValueCollection headers = GetNameValueCollection21(); PvpToken token = new PvpToken(headers); XElement statement = XElement.Parse(token.GetSamlAttributeStatement().OuterXml); var values = statement.Elements(PvpToken.SamlXNamespace + "Attribute").ToDictionary(a => a.Attribute("Name").Value, a => a.Elements(PvpToken.SamlXNamespace + "AttributeValue").Select(v => v.Value).ToList()); PvpToken parsedToken = new PvpToken(values); Assert.AreEqual(PvpVersion.Version21, parsedToken.Version); Assert.AreEqual("*****@*****.**", parsedToken.GetAttributeValue(PvpAttributes.USERID)); Assert.AreEqual("Beispielrolle(GKZ=60420);Beispielrolle2(ABC=XYZ, DEF=4711)", parsedToken.GetAttributeValue(PvpAttributes.ROLES)); foreach (HttpHeader header in parsedToken.GetHeaders()) { if (header.Name.Equals("X-PVP-roles", StringComparison.InvariantCultureIgnoreCase)) { continue; } Assert.AreEqual(headers[header.Name], header.Value, "Fehler bei " + header.Name); } }