Skip to content

Commit d3f2c06

Browse files
authored
Merge pull request #338 from SAML-Toolkits/fix_wantauthnRequestsigned_parser
Fix WantAuthnRequestsSigned parser.
2 parents 31f1a85 + 12e019c commit d3f2c06

File tree

3 files changed

+30
-5
lines changed

3 files changed

+30
-5
lines changed

src/onelogin/saml2/idp_metadata_parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ def parse(
148148

149149
idp_entity_id = entity_descriptor_node.get('entityID', None)
150150

151-
want_authn_requests_signed = entity_descriptor_node.get('WantAuthnRequestsSigned', None)
151+
want_authn_requests_signed = idp_descriptor_node.get('WantAuthnRequestsSigned', None)
152152

153153
name_id_format_nodes = OneLogin_Saml2_XML.query(idp_descriptor_node, './md:NameIDFormat')
154154
if len(name_id_format_nodes) > 0:

tests/data/metadata/idp_multiple_descriptors.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
</md:IDPSSODescriptor>
2727
</md:EntityDescriptor>
2828
<md:EntityDescriptor entityID="https://bar.example.com/access/saml/idp.xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="md:EntityDescriptorType">
29-
<md:IDPSSODescriptor WantAuthnRequestsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
29+
<md:IDPSSODescriptor WantAuthnRequestsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
3030
<md:KeyDescriptor use="signing">
3131
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
3232
<ds:X509Data>

tests/src/OneLogin/saml2_tests/idp_metadata_parser_test.py

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -291,12 +291,37 @@ def test_parse_with_entity_id(self):
291291
data = OneLogin_Saml2_IdPMetadataParser.parse(xml_idp_metadata)
292292
self.assertEqual("https://foo.example.com/access/saml/idp.xml", data["idp"]["entityId"])
293293

294+
expected_settings_json = """
295+
{
296+
"security": {"authnRequestsSigned": "true"},
297+
"sp": {
298+
"NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
299+
},
300+
"idp": {
301+
"singleLogoutService": {
302+
"url": "https://hello.example.com/access/saml/logout",
303+
"binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
304+
},
305+
"entityId": "https://foo.example.com/access/saml/idp.xml",
306+
"x509cert": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURxekNDQXhTZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRc0ZBRENCaGpFTE1Ba0dBMVVFQmhNQ1FWVXgKRERBS0JnTlZCQWdUQTA1VFZ6RVBNQTBHQTFVRUJ4TUdVM2xrYm1WNU1Rd3dDZ1lEVlFRS0RBTlFTVlF4Q1RBSApCZ05WQkFzTUFERVlNQllHQTFVRUF3d1BiR0YzY21WdVkyVndhWFF1WTI5dE1TVXdJd1lKS29aSWh2Y05BUWtCCkRCWnNZWGR5Wlc1alpTNXdhWFJBWjIxaGFXd3VZMjl0TUI0WERURXlNRFF4T1RJeU5UUXhPRm9YRFRNeU1EUXgKTkRJeU5UUXhPRm93Z1lZeEN6QUpCZ05WQkFZVEFrRlZNUXd3Q2dZRFZRUUlFd05PVTFjeER6QU5CZ05WQkFjVApCbE41Wkc1bGVURU1NQW9HQTFVRUNnd0RVRWxVTVFrd0J3WURWUVFMREFBeEdEQVdCZ05WQkFNTUQyeGhkM0psCmJtTmxjR2wwTG1OdmJURWxNQ01HQ1NxR1NJYjNEUUVKQVF3V2JHRjNjbVZ1WTJVdWNHbDBRR2R0WVdsc0xtTnYKYlRDQm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXdnWWtDZ1lFQXFqaWUzUjJvaStwRGFldndJeXMvbWJVVApubkdsa3h0ZGlrcnExMXZleHd4SmlQTmhtaHFSVzNtVXVKRXpsbElkVkw2RW14R1lUcXBxZjkzSGxoa3NhZUowCjhVZ2pQOVVtTVlyaFZKdTFqY0ZXVjdmei9yKzIxL2F3VG5EVjlzTVlRcXVJUllZeTdiRzByMU9iaXdkb3ZudGsKN2dGSTA2WjB2WmFjREU1Ym9xVUNBd0VBQWFPQ0FTVXdnZ0VoTUFrR0ExVWRFd1FDTUFBd0N3WURWUjBQQkFRRApBZ1VnTUIwR0ExVWREZ1FXQkJTUk9OOEdKOG8rOGpnRnRqa3R3WmRxeDZCUnlUQVRCZ05WSFNVRUREQUtCZ2dyCkJnRUZCUWNEQVRBZEJnbGdoa2dCaHZoQ0FRMEVFQllPVkdWemRDQllOVEE1SUdObGNuUXdnYk1HQTFVZEl3U0IKcXpDQnFJQVVrVGpmQmlmS1B2STRCYlk1TGNHWGFzZWdVY21oZ1l5a2dZa3dnWVl4Q3pBSkJnTlZCQVlUQWtGVgpNUXd3Q2dZRFZRUUlFd05PVTFjeER6QU5CZ05WQkFjVEJsTjVaRzVsZVRFTU1Bb0dBMVVFQ2d3RFVFbFVNUWt3CkJ3WURWUVFMREFBeEdEQVdCZ05WQkFNTUQyeGhkM0psYm1ObGNHbDBMbU52YlRFbE1DTUdDU3FHU0liM0RRRUoKQVF3V2JHRjNjbVZ1WTJVdWNHbDBRR2R0WVdsc0xtTnZiWUlCQVRBTkJna3Foa2lHOXcwQkFRc0ZBQU9CZ1FDRQpUQWVKVERTQVc2ejFVRlRWN1FyZWg0VUxGT1JhajkrZUN1RjNLV0RIYyswSVFDajlyZG5ERzRRL3dmNy9yYVEwCkpuUFFDU0NkclBMSmV5b1BIN1FhVHdvYUY3ZHpWdzRMQ3N5TkpURld4NGNNNTBWdzZSNWZET2dpQzhic2ZmUzgKQkptb3VscnJaRE5OVmpHOG1XNmNMeHJZdlZRT3JSVmVjQ0ZJZ3NzQ2JBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
307+
"singleSignOnService": {
308+
"url": "https://hello.example.com/access/saml/login",
309+
"binding": "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
310+
}
311+
}
312+
}
313+
"""
314+
expected_settings = json.loads(expected_settings_json)
315+
self.assertEqual(expected_settings, data)
316+
317+
294318
# should find desired descriptor
295319
data2 = OneLogin_Saml2_IdPMetadataParser.parse(xml_idp_metadata, entity_id="https://bar.example.com/access/saml/idp.xml")
296320
self.assertEqual("https://bar.example.com/access/saml/idp.xml", data2["idp"]["entityId"])
297321

298-
expected_settings_json = """
322+
expected_settings_json2 = """
299323
{
324+
"security": {"authnRequestsSigned": "false"},
300325
"sp": {
301326
"NameIDFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"
302327
},
@@ -314,8 +339,8 @@ def test_parse_with_entity_id(self):
314339
}
315340
}
316341
"""
317-
expected_settings = json.loads(expected_settings_json)
318-
self.assertEqual(expected_settings, data2)
342+
expected_settings2 = json.loads(expected_settings_json2)
343+
self.assertEqual(expected_settings2, data2)
319344

320345
def test_parse_multi_certs(self):
321346
"""

0 commit comments

Comments
 (0)