Support #20229
Incompatibilité avec ADFS 3.0 à cause du noeud d'extension eo:next_url
100%
Description
Bonjour,
J'ai développé un SP avec django-mellon. J'ai testé le fonctionnement avec un IDP de Saleforce sans problème. Par contre avec un ADFS 3.0 (Windows Server 2012 R2)
J'obtiens cette erreur : To accept extensions, you must extend the SamlProtocolSerializer. Mais je ne peux pas...
<samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:eo="https://www.entrouvert.com/" ID="_436D5D4EED273F6DB99016A17F10AC4C" Version="2.0" IssueInstant="2017-11-21T14:13:10Z" Destination="https://XXXX/adfs/ls/" ForceAuthn="true" IsPassive="false"> <saml:Issuer>https://monsp/accounts/mellon/metadata/</saml:Issuer> <samlp:Extensions> <eo:next_url>https://monsp/</eo:next_url> </samlp:Extensions> <samlp:NameIDPolicy AllowCreate="true"/> </samlp:AuthnRequest>
Est-ce que vous avez été confronté à cette situation, ou est-ce que c'est possible tout simplement de ne pas générer la requête avec les extensions.
Merci
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Thomas Noël il y a plus de 6 ans
- Lié à Development #18452: inclure l'url de destination dans le nœud Extensions ajouté
Mis à jour par Frédéric Péters il y a plus de 6 ans
Pas exactement cette situation mais par exemple il est arrivé qu'un IdP Sun "digère" mal nos données pourtant conforme au spécifications. J'imagine qu'on pourrait pareillement ajouter la prise en compte d'un paramètre à l'URL des métadonnées fournies par django-mellon, déclarant que le <samlp:Extension> ne doit pas être inclus.
Mis à jour par Thomas Noël il y a plus de 6 ans
- Statut changé de Nouveau à En cours
est-ce que c'est possible tout simplement de ne pas générer la requête avec les extensions.
Non, l'extension est toujours ajoutée (ça vient de #18452 → https://git.entrouvert.org/django-mellon.git/commit/?id=646132c661af7269def3c76a8ee3bc43854429cd)
Ce qui pourrait être envisagé, c'est l'ajout d'un settings AUTHNREQUEST_EXTENSIONS
, qui serait donc à True par défaut, mais pourrait être positionné à False, pour un IdP donné ou globalement.
Quelque chose dans le genre :
diff --git a/mellon/app_settings.py b/mellon/app_settings.py index aeeab73..a595dab 100644 --- a/mellon/app_settings.py +++ b/mellon/app_settings.py @@ -13,6 +13,7 @@ class AppSettings(object): 'NAME_ID_POLICY_FORMAT': None, 'NAME_ID_POLICY_ALLOW_CREATE': True, 'FORCE_AUTHN': False, + 'ADD_AUTHNREQUEST_EXTENSIONS': True, 'ADAPTER': ( 'mellon.adapters.DefaultAdapter', ), diff --git a/mellon/views.py b/mellon/views.py index e01dc13..4e83bec 100644 --- a/mellon/views.py +++ b/mellon/views.py @@ -363,14 +363,15 @@ class LoginView(ProfileMixin, LogMixin, View): authn_request.requestedAuthnContext = req_authncontext req_authncontext.authnContextClassRef = authn_classref - authn_request.extensions = lasso.Samlp2Extensions() - authn_request.extensions.setOriginalXmlnode( - '''<samlp:Extensions - xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" - xmlns:eo="https://www.entrouvert.com/"> - <eo:next_url>%s</eo:next_url> - </samlp:Extensions>''' % - escape(request.build_absolute_uri(next_url or '/'))) + if utils.get_setting(idp, 'ADD_AUTHNREQUEST_EXTENSIONS'): + authn_request.extensions = lasso.Samlp2Extensions() + authn_request.extensions.setOriginalXmlnode( + '''<samlp:Extensions + xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" + xmlns:eo="https://www.entrouvert.com/"> + <eo:next_url>%s</eo:next_url> + </samlp:Extensions>''' % + escape(request.build_absolute_uri(next_url or '/'))) self.set_next_url(next_url) login.buildAuthnRequestMsg() except lasso.Error, e:
(idée que je soumets ici à mes collègues, mais tu peux déjà l'essayer localement, en ajoutant donc un MELLON_ADD_AUTHNREQUEST_EXTENSIONS=False
dans les settings ; je ne garantie pas encore cependant que ça soit intégré ainsi dans le code, même si ça marche ;) )
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
Je verrai bien la valeur par défaut à False, transmettre l'URL finale sur le SP ce n'est pas anodin.
Mis à jour par Thomas Noël il y a plus de 6 ans
- Fichier 0001-misc-disable-AuthnRequest-eo-next_url-Extensions-by-.patch 0001-misc-disable-AuthnRequest-eo-next_url-Extensions-by-.patch ajouté
- Patch proposed changé de Non à Oui
Yep. Pour le nom du settings, peut-être plutôt ADD_AUTHNREQUEST_NEXT_URL_EXTENSION ?
Note internet EO : ça veut dire le positionner à True sur Publik (assez facile via hobo, en fait).
Mis à jour par Benjamin Dauvergne il y a environ 6 ans
Ça ne concerne que GNM je ne crois pas qu'on utilise ça ailleurs pour l'instant.
Mis à jour par Thomas Noël il y a environ 6 ans
- Statut changé de En cours à Résolu (à déployer)
- % réalisé changé de 0 à 100
Appliqué par commit django-mellon|ac75dce84f5bd029d00f5a7d96d9d9d7d773acd0.
Mis à jour par Thomas Noël il y a environ 6 ans
Ca impose un patch dans hobo, non ? (ADD_AUTHNREQUEST_NEXT_URL_EXTENSION=True quelque part)
Mis à jour par Thomas Noël il y a environ 6 ans
Benjamin Dauvergne a écrit :
Ça ne concerne que GNM je ne crois pas qu'on utilise ça ailleurs pour l'instant.
Ah, non, pas de patch hobo, donc, mais une modif des settings à poser à GNM sur tous les SP ?
Mis à jour par Thomas Noël il y a environ 6 ans
- Lié à Bug #22352: activer l'envoi de l'extension eo:next_url par mellon (ADD_AUTHNREQUEST_NEXT_URL_EXTENSION) ajouté
Mis à jour par Benjamin Dauvergne il y a environ 6 ans
- Sujet changé de ADFS 3.0 à Incompatibilité avec ADFS 3.0 à cause du noeud d'extension eo:next_url
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé
misc: disable AuthnRequest eo:next_url Extensions by default (fixes #20229)