Project

General

Profile

Support #20229

Incompatibilité avec ADFS 3.0 à cause du noeud d'extension eo:next_url

Added by Olivier Larchevêque about 2 years ago. Updated about 1 year ago.

Status:
Fermé
Priority:
Normal
Assignee:
Target version:
Start date:
22 Nov 2017
Due date:
% Done:

100%

Patch proposed:
Yes
Planning:
No

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

0001-misc-disable-AuthnRequest-eo-next_url-Extensions-by-.patch View (2.32 KB) Thomas Noël, 23 Nov 2017 10:25 AM


Related issues

Related to django-mellon - Development #18452: inclure l'url de destination dans le nœud Extensions Fermé 05 Sep 2017
Related to Hobo - Bug #22352: activer l'envoi de l'extension eo:next_url par mellon (ADD_AUTHNREQUEST_NEXT_URL_EXTENSION) Solution déployée 07 Mar 2018

Associated revisions

Revision ac75dce8 (diff)
Added by Thomas Noël almost 2 years ago

misc: disable AuthnRequest eo:next_url Extensions by default (fixes #20229)

History

#1 Updated by Thomas Noël about 2 years ago

  • Related to Development #18452: inclure l'url de destination dans le nœud Extensions added

#2 Updated by Frédéric Péters about 2 years ago

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.

#3 Updated by Thomas Noël about 2 years ago

  • Status changed from Nouveau to 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 #18452https://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 ;) )

#4 Updated by Benjamin Dauvergne about 2 years ago

Je verrai bien la valeur par défaut à False, transmettre l'URL finale sur le SP ce n'est pas anodin.

#5 Updated by Thomas Noël about 2 years ago

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).

#6 Updated by Benjamin Dauvergne almost 2 years ago

Ça ne concerne que GNM je ne crois pas qu'on utilise ça ailleurs pour l'instant.

#7 Updated by Benjamin Dauvergne almost 2 years ago

Ack.

#8 Updated by Benjamin Dauvergne almost 2 years ago

  • Assignee set to Thomas Noël

#9 Updated by Thomas Noël almost 2 years ago

  • Status changed from En cours to Résolu (à déployer)
  • % Done changed from 0 to 100

#10 Updated by Thomas Noël almost 2 years ago

Ca impose un patch dans hobo, non ? (ADD_AUTHNREQUEST_NEXT_URL_EXTENSION=True quelque part)

#11 Updated by Thomas Noël almost 2 years ago

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 ?

#14 Updated by Thomas Noël almost 2 years ago

  • Related to Bug #22352: activer l'envoi de l'extension eo:next_url par mellon (ADD_AUTHNREQUEST_NEXT_URL_EXTENSION) added

#15 Updated by Benjamin Dauvergne over 1 year ago

  • Subject changed from ADFS 3.0 to Incompatibilité avec ADFS 3.0 à cause du noeud d'extension eo:next_url

#16 Updated by Benjamin Dauvergne over 1 year ago

  • Target version set to 1.2.34

#17 Updated by Benjamin Dauvergne about 1 year ago

  • Status changed from Résolu (à déployer) to Fermé

Also available in: Atom PDF