Skip to content

Commit c883b5f

Browse files
committed
pick trust metadata from both xml & json
1 parent 1db7fd1 commit c883b5f

File tree

4 files changed

+32
-14
lines changed

4 files changed

+32
-14
lines changed

NEWS.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,4 +173,8 @@ to sign using HSMs. The only mandatory non-python dependency now is lxml.
173173

174174
2.1.3
175175
-----
176+
* Release date: ons 10 sep 2024 17:17:10 CET
177+
176178
* Add DiscoveryResponse info to SPs in discojson
179+
* Remove cherrypy imports
180+
* Fix logging

src/pyff/samlmd.py

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,20 +1032,6 @@ def discojson_sp(e, global_trust_info=None, global_md_sources=None):
10321032
return sp
10331033

10341034

1035-
def discojson_sp_t(req):
1036-
d = []
1037-
t = req.t
1038-
global_tinfo = req.md.rm.global_trust_info()
1039-
global_sources = req.md.rm.global_md_sources()
1040-
1041-
for e in iter_entities(t):
1042-
sp = discojson_sp(e, global_trust_info=global_tinfo, global_md_sources=global_sources)
1043-
if sp is not None:
1044-
d.append(sp)
1045-
1046-
return d
1047-
1048-
10491035
def discojson_sp_attr(e):
10501036

10511037
attribute = "http://refeds.org/entity-selection-profile"
@@ -1065,6 +1051,24 @@ def discojson_sp_attr(e):
10651051
return sp
10661052

10671053

1054+
def discojson_sp_t(req):
1055+
d = []
1056+
t = req.t
1057+
global_tinfo = req.md.rm.global_trust_info()
1058+
global_sources = req.md.rm.global_md_sources()
1059+
1060+
for e in iter_entities(t):
1061+
sp = discojson_sp(e, global_trust_info=global_tinfo, global_md_sources=global_sources)
1062+
if sp is not None:
1063+
d.append(sp)
1064+
1065+
sp = discojson_sp_attr(e)
1066+
if sp is not None:
1067+
d.append(sp)
1068+
1069+
return d
1070+
1071+
10681072
def discojson_sp_attr_t(req):
10691073
d = []
10701074
t = req.t

src/pyff/test/data/metadata/test02-sp.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@
2525
<saml:AttributeValue>http://www.geant.net/uri/dataprotection-code-of-conduct/v1</saml:AttributeValue>
2626
<saml:AttributeValue>https://refeds.org/category/code-of-conduct/v2</saml:AttributeValue>
2727
</saml:Attribute>
28+
<saml:Attribute NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" Name="http://refeds.org/entity-selection-profile">
29+
<saml:AttributeValue>ewogICJwcm9maWxlcyI6IHsKICAgICJpbmNvbW1vbi13YXlmaW5kZXIiOiB7CiAgICAgICAic3RyaWN0IjogdHJ1ZSwKICAgICAgICJlbnRpdGllcyI6IFsKICAgICAgICAgewogICAgICAgICAgICJzZWxlY3QiOiAiaHR0cHM6Ly9tZHEuaW5jb21tb24ub3JnL2VudGl0aWVzIiwKICAgICAgICAgICAibWF0Y2giOiAibWRfc291cmNlIiwKICAgICAgICAgICAiaW5jbHVkZSI6IHRydWUKICAgICAgICAgfQogICAgICAgXQogICAgfQogIH0KfQ==</saml:AttributeValue>
30+
</saml:Attribute>
2831
</mdattr:EntityAttributes>
2932
</md:Extensions>
3033
<md:SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">

src/pyff/test/test_pipeline.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -747,12 +747,19 @@ def test_discojson_sp(self):
747747
sp_json = json.load(f)
748748

749749
assert 'https://example.com.com/shibboleth' in str(sp_json)
750+
assert len(sp_json) == 2
750751
example_sp_json = sp_json[0]
751752
assert 'customer' in example_sp_json['profiles']
752753
customer_tinfo = example_sp_json['profiles']['customer']
753754
assert customer_tinfo['entity'][0] == {'entity_id': 'https://example.org/idp.xml', 'include': True}
754755
assert customer_tinfo['entities'][0] == {'select': 'http://www.swamid.se/', 'match': 'registrationAuthority', 'include': True}
755756
assert customer_tinfo['fallback_handler'] == {'profile': 'href', 'handler': 'https://www.example.org/about'}
757+
758+
example_sp_json_2 = sp_json[1]
759+
assert 'incommon-wayfinder' in example_sp_json_2['profiles']
760+
tinfo = example_sp_json_2['profiles']['incommon-wayfinder']
761+
assert tinfo['entities'][0] == {'select': 'https://mdq.incommon.org/entities', 'match': 'md_source', 'include': True}
762+
assert tinfo['strict']
756763
except IOError:
757764
pass
758765
finally:

0 commit comments

Comments
 (0)