From 562dd2d329dd67987a097245ae434bf72e28f2cc Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Sun, 7 Apr 2024 10:34:14 +0200 Subject: [PATCH] allow MDQ "entity_transform": "percent_encoded" Cf https://datatracker.ietf.org/doc/draft-young-md-query/ Allows to behave alike Shibboleth SP. Needed for french https://mdq.federation.renater.fr/ which currently does not handle SHA1 encoding. --- src/saml2/mdstore.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/saml2/mdstore.py b/src/saml2/mdstore.py index 2ea9742f0..2ff827676 100644 --- a/src/saml2/mdstore.py +++ b/src/saml2/mdstore.py @@ -1,3 +1,4 @@ +import urllib.parse import hashlib from hashlib import sha1 import importlib @@ -903,6 +904,10 @@ def sha1_entity_transform(entity_id): transform = f"{{sha1}}{entity_id_sha1}" return transform + @staticmethod + def percent_encoded_entity_transform(entity_id): + return urllib.parse.quote(entity_id, safe='') + def __init__( self, url=None, @@ -932,7 +937,9 @@ def __init__( self.url = url.rstrip("/") - if entity_transform: + if entity_transform == "percent_encoded": + self.entity_transform = MetaDataMDX.percent_encoded_entity_transform + elif entity_transform: self.entity_transform = entity_transform else: self.entity_transform = MetaDataMDX.sha1_entity_transform