diff --git a/src/saml2/assertion.py b/src/saml2/assertion.py index c9d138b..920083c 100644 --- a/src/saml2/assertion.py +++ b/src/saml2/assertion.py @@ -405,7 +405,7 @@ class Policy(object): :retur: The format """ - return self.get("name_format", sp_entity_id, NAME_FORMAT_URI) + return self.get("name_form", sp_entity_id, NAME_FORMAT_URI) def get_lifetime(self, sp_entity_id): """ The lifetime of the assertion diff --git a/tests/idp_conf.py b/tests/idp_conf.py index ffac558..d805207 100644 --- a/tests/idp_conf.py +++ b/tests/idp_conf.py @@ -1,7 +1,7 @@ from saml2 import BINDING_SOAP from saml2 import BINDING_HTTP_REDIRECT from saml2 import BINDING_HTTP_POST -from saml2.saml import NAMEID_FORMAT_PERSISTENT +from saml2.saml import NAMEID_FORMAT_PERSISTENT, NAME_FORMAT_BASIC from saml2.saml import NAME_FORMAT_URI from pathutils import full_path @@ -30,10 +30,11 @@ CONFIG = { "urn:mace:example.com:saml:roland:sp": { "lifetime": {"minutes": 5}, "nameid_format": NAMEID_FORMAT_PERSISTENT, - # "attribute_restrictions":{ - # "givenName": None, - # "surName": None, - # } + }, + "https://example.com/sp": { + "lifetime": {"minutes": 5}, + "nameid_format": NAMEID_FORMAT_PERSISTENT, + "name_form": NAME_FORMAT_BASIC } }, "subject_data": full_path("subject_data.db"), @@ -48,6 +49,7 @@ CONFIG = { "metadata": [{ "class": "saml2.mdstore.MetaDataFile", "metadata": [(full_path("metadata_sp_1.xml"), ), + (full_path("metadata_sp_2.xml"), ), (full_path("vo_metadata.xml"), )], }], "attribute_map_dir": full_path("attributemaps"), diff --git a/tests/metadata_sp_2.xml b/tests/metadata_sp_2.xml new file mode 100644 index 0000000..0e8e710 --- /dev/null +++ b/tests/metadata_sp_2.xml @@ -0,0 +1,114 @@ + + + + + + + + + MIICsDCCAhmgAwIBAgIJAJrzqSSwmDY9MA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV + BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX + aWRnaXRzIFB0eSBMdGQwHhcNMDkxMDA2MTk0OTQxWhcNMDkxMTA1MTk0OTQxWjBF + MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50 + ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB + gQDJg2cms7MqjniT8Fi/XkNHZNPbNVQyMUMXE9tXOdqwYCA1cc8vQdzkihscQMXy + 3iPw2cMggBu6gjMTOSOxECkuvX5ZCclKr8pXAJM5cY6gVOaVO2PdTZcvDBKGbiaN + efiEw5hnoZomqZGp8wHNLAUkwtH9vjqqvxyS/vclc6k2ewIDAQABo4GnMIGkMB0G + A1UdDgQWBBRePsKHKYJsiojE78ZWXccK9K4aJTB1BgNVHSMEbjBsgBRePsKHKYJs + iojE78ZWXccK9K4aJaFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUt + U3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAJrzqSSw + mDY9MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAJSrKOEzHO7TL5cy6 + h3qh+3+JAk8HbGBW+cbX6KBCAw/mzU8flK25vnWwXS3dv2FF3Aod0/S7AWNfKib5 + U/SA9nJaz/mWeF9S0farz9AQFc8/NSzAzaVq7YbM4F6f6N2FRl7GikdXRCed45j6 + mrPzGzk3ECbupFnqyREH3+ZPSdk= + + + + + + + + + MIICHzCCAYgCAQEwDQYJKoZIhvcNAQELBQAwWDELMAkGA1UEBhMCenoxCzAJBgNV + BAgMAnp6MQ0wCwYDVQQHDAR6enp6MQ4wDAYDVQQKDAVaenp6ejEOMAwGA1UECwwF + Wnp6enoxDTALBgNVBAMMBHRlc3QwHhcNMTUwNjAyMDc0MzAxWhcNMjUwNTMwMDc0 + MzAxWjBYMQswCQYDVQQGEwJ6ejELMAkGA1UECAwCenoxDTALBgNVBAcMBHp6enox + DjAMBgNVBAoMBVp6enp6MQ4wDAYDVQQLDAVaenp6ejENMAsGA1UEAwwEdGVzdDCB + nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA41tJCTPuG2lirbztuGbBlzbzSipM + EzM+zluWegUaoUjqtlgNHOTQqTJOqw/GdjkxRKJT6IxI3/HVcnfw7P4a4xSkL/ME + IG3VyzedWEyLIHeofoQSTvr84ZdD0+Gk+zNCSqOQC7UuqpOLbMKK1tgZ8Mr7BkgI + p8H3lreLf29Sd5MCAwEAATANBgkqhkiG9w0BAQsFAAOBgQB0EXxy5+hsB7Rid7Gy + CZrAObpaC4nbyPPW/vccFKmEkYtlygEPgky7D9AGsVSaTc/YxPZcanY+vKoRIsiR + 6ZitIUU5b+NnHcdj6289tUQ0iHj5jgVyv8wYHvPntTnqH2S7he0talLER8ITYToh + 2wz3u7waz/GypMeA/suhoEfxew== + + + + + + + + + MIICHzCCAYgCAQEwDQYJKoZIhvcNAQELBQAwWDELMAkGA1UEBhMCenoxCzAJBgNV + BAgMAnp6MQ0wCwYDVQQHDAR6enp6MQ4wDAYDVQQKDAVaenp6ejEOMAwGA1UECwwF + Wnp6enoxDTALBgNVBAMMBHRlc3QwHhcNMTUwNjAyMDc0MjI2WhcNMjUwNTMwMDc0 + MjI2WjBYMQswCQYDVQQGEwJ6ejELMAkGA1UECAwCenoxDTALBgNVBAcMBHp6enox + DjAMBgNVBAoMBVp6enp6MQ4wDAYDVQQLDAVaenp6ejENMAsGA1UEAwwEdGVzdDCB + nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAx3I/NFlP1wbHfRZckJn4z1HX5nnY + QhQ3ekxEJmTTaj/1BvlZBmvgV40SBzH4nP1sT02xoQo7+vHItFAzaJlF2oBXsSxj + aZMGu/gkVbaHP9cYKvskhOjOJ4XArrUnKMTb1jZ+XkkOuot1NLE7/dTILF8ahHU2 + omYNASLnxHN3bnkCAwEAATANBgkqhkiG9w0BAQsFAAOBgQCQam1Oz7iQcD9+OurB + M5a+Hth53m5hbAFuguSvERPCuJ/CfP1+g7CIZN/GnsIsg9QW77NvdOyxjXxzoJJm + okl1qz/qy3FY3mJ0gIUxDyPD9DL3c9/03MDv5YmWsoP+HNqK8QtNJ/JDEOhBr/Eo + /MokRo4gtMNeLF/soveWNoNiUg== + + + + + + + + urn:mace:example.com:saml:roland:sp + + My own SP + + + + + + + + + AB Exempel + + AB Exempel + + http://www.example.org + + + + Roland + Hedberg + tech@eample.com + tech@example.org + +46 70 100 0000 + + + diff --git a/tests/test_50_server.py b/tests/test_50_server.py index c43d489..21703b5 100644 --- a/tests/test_50_server.py +++ b/tests/test_50_server.py @@ -271,7 +271,7 @@ class TestServer1(): def test_sso_response_with_identity(self): name_id = self.server.ident.transient_nameid( - "urn:mace:example.com:saml:roland:sp", "id12") + "https://example.com/sp", "id12") resp = self.server.create_authn_response( { "eduPersonEntitlement": "Short stop", @@ -282,7 +282,7 @@ class TestServer1(): }, "id12", # in_response_to "http://localhost:8087/", # destination - "urn:mace:example.com:saml:roland:sp", # sp_entity_id + "https://example.com/sp", # sp_entity_id name_id=name_id, authn=AUTHN ) @@ -310,8 +310,8 @@ class TestServer1(): if attr.friendly_name == "givenName": break assert len(attr.attribute_value) == 1 - assert attr.name == "urn:oid:2.5.4.42" - assert attr.name_format == "urn:oasis:names:tc:SAML:2.0:attrname-format:uri" + assert attr.name == "urn:mace:dir:attribute-def:givenName" + assert attr.name_format == "urn:oasis:names:tc:SAML:2.0:attrname-format:basic" value = attr.attribute_value[0] assert value.text.strip() == "Derek" assert value.get_type() == "xs:string"