Development #27135
Déléguer l'authentification passive à la vue de login si aucune session n'est ouverte
0%
Description
Le but est de permettre à la vue de login de déterminer si une authentification passive déléguée est possible.
Fichiers
Demandes liées
Révisions associées
auth_oidc: make autorun go directly to the OP (#27135)
misc: proxy passive SSO from SAML2 services to OIDC idps (#27135)
Behaviour of the SAML2 when receiving a Passive AuthnRequest and not
user is logged is modified. Before an immediate response with StatusCode
no-passive was returned. Now if one authenticator with the method
passive_login is found, the request is transferred to this authentication
source.
Historique
Mis à jour par Benjamin Dauvergne il y a plus d'un an
- Lié à Development #33233: conversion d'un SSO SAML isPassive en OIDC prompt=none ajouté
Mis à jour par Benjamin Dauvergne il y a plus d'un an
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
- 0001: modification de la signature des méthodes autorun pour avoir un next_url explicite (nécessaire pour l'utiliser depuis une vue de l'IdP SAML)
- 0002: modification de l'autorun de auth_oidc pour économiser un redirect local et lancer directement la redirection vers l'IdP OIDC
- 0003: ajout d'un paramètre optionne passive à la méthode autorun de OIDCProvider pour pouvoir déclencher un SSO passif
- 0004: création d'une vue utilisateur passive_login() utilisable par un IdP pour lancer un SSO passif (quelque soit la source)
- 0005: utilisation de passive_login dans l'IdP SAML2 lorsqu'une AuthnRequest passive est reçu à la place de la réponse immédiate actuelle
Finalement on ne passe pas par la vue de login, ça évite de la complexifier.
Mis à jour par Benjamin Dauvergne il y a plus d'un an
- Fichier 0001-misc-add-next_url-parameter-to-Authenticator.autorun.patch 0001-misc-add-next_url-parameter-to-Authenticator.autorun.patch ajouté
- Fichier 0003-misc-proxy-passive-SSO-from-SAML2-services-to-OIDC-i.patch 0003-misc-proxy-passive-SSO-from-SAML2-services-to-OIDC-i.patch ajouté
- Fichier 0002-auth_oidc-make-autorun-go-directly-to-the-OP-27135.patch 0002-auth_oidc-make-autorun-go-directly-to-the-OP-27135.patch ajouté
- 0001 & 0002: pareil qu'avant
- 0003: toute la partie passive_login qui est maintenant complètement séparée de la méthode autorun() ça évite de jouer avec inspect et ça fait un code plus simple. Par rapport au dernier passave j'avais oublié de gérer le retour en cas de SSO passif qui échoue dans la partie IdP SAML2 (on serait revenu sur continue_sso() qui aurait relancé un SSO passif vers l'IdP OIDC, maintenant ça ne boucle plus).
Mis à jour par Benjamin Dauvergne il y a plus d'un an
- Fichier 0001-misc-add-next_url-parameter-to-Authenticator.autorun.patch 0001-misc-add-next_url-parameter-to-Authenticator.autorun.patch ajouté
- Fichier 0003-misc-proxy-passive-SSO-from-SAML2-services-to-OIDC-i.patch 0003-misc-proxy-passive-SSO-from-SAML2-services-to-OIDC-i.patch ajouté
- Fichier 0002-auth_oidc-make-autorun-go-directly-to-the-OP-27135.patch 0002-auth_oidc-make-autorun-go-directly-to-the-OP-27135.patch ajouté
Et un test passant de retour de SSO passif (on revient sur continue_sso() en étant connecté).
Mis à jour par Paul Marillonnet il y a plus d'un an
- Statut changé de Solution proposée à Solution validée
- Planning mis à Non
0001 et 0002 ok.
––––––––––––
Dans 0003 :
–––
def passive_login(request, *, next_url, login_hint=None):
# […]
if len(visible_authenticators) != 1:
return None
unique_authenticator = visible_authenticators[0]
On peut peut-être virer cette contrainte peut-être pas nécessaire pour que le tout fonctionne ? utils_misc.get_authenticators()
les renvoie triés par ordre d’apparition donc simplement tester sur le premier même s’il y en a plusieurs ?
–––
Juste du détail, dans tests/test_idp_saml2.py::test_sso_with_authenticator_passive_sso_authenticated, tu as recopié le commentaire du test d’avant
# check NoPassive status code response after if conitnue is called and still no user is loggued in
alors que ce n’est pas ce que ce test fait.
–––
Sinon les tests sont clairs (à part les quelques lignes qui semblent propres au structures de données lasso genre les codes de retour qui sont différents dans scenario.sp.login.response.status.statusCode.value
et scenario.sp.login.response.status.statusCode.statusCode.value
), c’est bon pour moi. Ack.
Mis à jour par Benjamin Dauvergne il y a plus d'un an
Paul Marillonnet a écrit :
On peut peut-être virer cette contrainte peut-être pas nécessaire pour que le tout fonctionne ?
utils_misc.get_authenticators()
les renvoie triés par ordre d’apparition donc simplement tester sur le premier même s’il y en a plusieurs ?
Ok.
Juste du détail, dans tests/test_idp_saml2.py::test_sso_with_authenticator_passive_sso_authenticated, tu as recopié le commentaire du test d’avant
[...]
alors que ce n’est pas ce que ce test fait.
J'ai mis le bon commentaire.
Sinon les tests sont clairs (à part les quelques lignes qui semblent propres au structures de données lasso genre les codes de retour qui sont différents dans
scenario.sp.login.response.status.statusCode.value
etscenario.sp.login.response.status.statusCode.statusCode.value
), c’est bon pour moi. Ack.
SAML structure les codes d'erreur, générique au premier niveau (denied/success) puis plus spécifique en dessous.
Mis à jour par Paul Marillonnet il y a plus d'un an
Benjamin Dauvergne a écrit :
SAML structure les codes d'erreur, générique au premier niveau (denied/success) puis plus spécifique en dessous.
Ok, j’ignorais ça, merci pour la précision.
Mis à jour par Benjamin Dauvergne il y a plus d'un an
- Statut changé de Solution validée à Résolu (à déployer)
commit e524c5f94d0c7e9a62e4fd245e477a3c45f6cb10 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Tue Nov 29 16:32:45 2022 +0100 misc: proxy passive SSO from SAML2 services to OIDC idps (#27135) Behaviour of the SAML2 when receiving a Passive AuthnRequest and not user is logged is modified. Before an immediate response with StatusCode no-passive was returned. Now if one authenticator with the method passive_login is found, the request is transferred to this authentication source. commit 9d0d83b0e52af3604292aed894d846900729f1cc Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Tue Nov 29 16:32:00 2022 +0100 auth_oidc: make autorun go directly to the OP (#27135) commit f34b2af379f49f8ad8b60b774ebad8ea621f7425 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Wed Dec 7 10:58:26 2022 +0100 misc: add next_url parameter to Authenticator.autorun() (#27135)
Mis à jour par Benjamin Dauvergne il y a plus d'un an
- Lié à Bug #72507: idp_oidc : recueillir le consentement ou la sélection de profil de l’usager même lors d’un SSO passif (prompt=none) ajouté
Mis à jour par Transition automatique il y a plus d'un an
- Statut changé de Résolu (à déployer) à Solution déployée
misc: add next_url parameter to Authenticator.autorun() (#27135)