Projet

Général

Profil

Scénario #31512

Gérer le changement de mot de passe des utilisateurs depuis les SSO web

Ajouté par Daniel Dehennin il y a plus de 3 ans. Mis à jour il y a environ 3 ans.

Statut:
Terminé (Sprint)
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
12/01/2021
Echéance:
19/02/2021
% réalisé:

100%

Points de scénarios:
-
Restant à faire (heures):
0.00 heure
Estimation basée sur la vélocité:
Release:
Liens avec la release:
Auto

Description

Problème

Sur Scribe, nous avons deux sources de données qui ne peuvent pas être utilisées ensemble simplement :

  • L’annuaire OpenLDAP contient les attributs Envole nécessaires à leur fonctionnement
  • L’Active Directory contient le mot de passe et les informations de changement de mot de passe.

Actuellement, eole-SSO et LemonLDAP::NG ne permettent pas une utilisation totalement fonctionnelle des deux sources :

  • Soit nous utilisons OpenLDAP et nous n’avons pas les informations d’obligation de changement de mot de passe
  • Soit nous utilisons l’Active Directory et nous n’avons pas les attributs Envole

La détection de l’obligation de changement de mot de passe vient du mécanisme des politiques de mot de passe LDAP qui ne peut pas facilement être émulé en synchronisant des attributs de l’active directory vers OpenLDAP (impossible d’ajouter l’attribut pwdLastSet qui n’est défini par aucun schéma LDAP).

Proposition

Les solutions SSO devraient, dans le cadre d’un fonctionnement mixte AD / OpenLDAP :

  • Tenter d’authentifier l’utilisateur sur l’active directory et détecter le besoin de changement de mot de passe
  • Procéder au changement de mot de passe sur l’active directory
  • aller chercher les informations utilisateur dans l’OpenLDAP

LemoLDAP::NG

Cette solution de SSO permet de combinier des modules, il est ainsi possible de déclarer :

L’inconvénient est que le module d’authentification AD ne fait pas lui même la recherche du DN de l’utilisateur qui est délégué à son parent ce qui ne permet pas d’avoir le même DN pour les deux bases

Un contournement pourrait être de déclarer un module d’authentification personnalisé, dérivé du module AD qui prendrait en charge cette résolution mais il faut vérifier les interactions entre ces modules qui semblent partager la même source de DN:

Il semble donc qu’il faille créer un dérivé du module d’authentification (Scribe.pm ?) afin de rechercher le DN de l’AD dans un attribut différent. Peut-être aussi un dérivé du module de changement de mot de passe qui utilise aussi le DN.

Pour tester

  1. Déployer un aca.scribe-2.8.0-instance-AvecImport
  2. Installer le paquet eole-lemonldap-ng-scribe
  3. Activer LemonLDAP::NG : CreoleSet activerLemon oui
  4. Reconfigurer le serveur
  5. Regénérer les certificats pour prendre en compte les noms LemonLDAP::NG : /usr/share/creole/gen_certif.py -f
  6. Reconfigurer le serveur
  7. Forcer le changement de mot de passe à la prochaine connexion pour un utilisateur
    root@scribe:~# SSH_AUTH_SOCK= ssh -t -o IdentitiesOnly=yes addc samba-tool user setpassword --must-change-at-next-login prof1
    New Password: 
    Retype Password: 
    Changed password OK
    Connection to addc closed.
    
  8. Depuis le poste du testeur, se connecter à l’adresse https://auth.domscribe.ac-test.fr
  9. S’identifier avec le compte prof1 et le mot de passe défini précédemment

Sous-tâches

Tâche #31523: LemonLDAP::NG: tester l’implémentation d’un module d’authentification ScribeADFerméDaniel Dehennin

Tâche #31616: Intégrer le module d’authentification ScribeADFerméDaniel Dehennin

Tâche #31618: Adapter la configuration eole-lemonldap-ng pour utiliser le nouveau moduleFerméDaniel Dehennin

Tâche #31699: Modifier les modules LemonLDAP::NG afin de corriger le fonctionnement du changement de mot de passeFerméDaniel Dehennin

Tâche #31934: Valider et ajouter la vérification dans les tests SquashFerméJoël Cuissinat


Demandes liées

Lié à Distribution EOLE - Proposition Scénario #31404: Synchronisation pwdLastSet pour gérer la demande de changement à la 1ere connexion Fermé
Lié à EoleSSO - Scénario #31615: Gérer le changement de mot de passe des utilisateurs depuis EOLE SSO Terminé (Sprint) 22/02/2021 12/03/2021
Lié à SSO - Scénario #31937: Vérifier le changement du mot de passe via LemonLDAP::NG à l'intérieur de l'etb1 Terminé (Sprint) 12/04/2021 23/04/2021

Historique

#1 Mis à jour par Daniel Dehennin il y a plus de 3 ans

#2 Mis à jour par Daniel Dehennin il y a plus de 3 ans

  • Description mis à jour (diff)

#3 Mis à jour par Daniel Dehennin il y a plus de 3 ans

  • Echéance mis à 29/01/2021
  • Version cible mis à sprint 2021 02-04 Equipe MENSR
  • Début mis à 11/01/2021

#4 Mis à jour par Daniel Dehennin il y a plus de 3 ans

  • Description mis à jour (diff)

#5 Mis à jour par Daniel Dehennin il y a plus de 3 ans

  • Description mis à jour (diff)

#6 Mis à jour par Bruno Boiget il y a environ 3 ans

Pour la partie EoleSSO, cela demandera un peu de travail. On peut imaginer une solution de ce type :

  • dans les variables de configuration des annuaires LDAP d'eoleSSO, permettre de déclarer un annuaire AD.
    Dans ce cas, il faudrait à première vue ajouter les informations suivantes :
    • adresse du serveur AD
    • branche de recherche des utilisateurs dans AD (ex: CN=Users,DC=domscribe,DC=ac-test,DC=fr)
  • dans python-eoleldaptor, créer par exmple une classe eoleadproxy héritant de eoleldapproxy.
    • la méthode authenticate de cette classe ferait un premier test de connexion sur l'annuaire AD (recherche DN + bind) afin de remonter l'exception AD en cas d'échec d'authentification.
    • Si pas d'erreur, enchainer sur la méthode authenticate d'eoleldapproxy pour reprendre le fonctionnement classique sur l'annuaire ldap.
  • au niveau d'eoleSSO, prévoir 3 résultats possibles au niveau de l'authentification (ok/echec/changement password requis) et faire remonter l'info jusqu'au frontend pour afficher le message voulu.

Le travail impacterait principalement les fichiers ssoshare/authserver.py, eolesso/dataproxy.py et authform.py pour le côté frontend. Le plus difficile étant de gérer l'aspect callback hell du code :-)

Cette solution peut fonctionner sur un module de type scribe AD, ça parait plus compliqué dans le cas d'annuaires multi-établissement ou répliqués (je ne sais pas si il y a des cas d'usage en mode AD).

#7 Mis à jour par Daniel Dehennin il y a environ 3 ans

  • Description mis à jour (diff)
  • Release mis à EOLE 2.8.0

La partie EoleSSO est reporté dans un scénario dédié (#31615).

#8 Mis à jour par Daniel Dehennin il y a environ 3 ans

  • Release changé de EOLE 2.8.0 à EOLE 2.8.0.1

#9 Mis à jour par Daniel Dehennin il y a environ 3 ans

  • Projet changé de Distribution EOLE à SSO

#10 Mis à jour par Daniel Dehennin il y a environ 3 ans

  • Version cible changé de sprint 2021 02-04 Equipe MENSR à sprint 2021 05-07 Equipe MENSR

#11 Mis à jour par Daniel Dehennin il y a environ 3 ans

  • Statut changé de Nouveau à Résolu
  • Assigné à mis à Daniel Dehennin

#12 Mis à jour par Daniel Dehennin il y a environ 3 ans

  • Description mis à jour (diff)

#13 Mis à jour par Daniel Dehennin il y a environ 3 ans

  • Description mis à jour (diff)

#14 Mis à jour par Joël Cuissinat il y a environ 3 ans

  • Lié à Scénario #31937: Vérifier le changement du mot de passe via LemonLDAP::NG à l'intérieur de l'etb1 ajouté

#15 Mis à jour par Joël Cuissinat il y a environ 3 ans

  • Statut changé de Résolu à Terminé (Sprint)

Formats disponibles : Atom PDF