Projet

Général

Profil

Scénario #35906

Forcer le changement de mot de passe à la première connexion au portail web

Ajouté par Laurent Brillard il y a presque 2 ans. Mis à jour il y a presque 2 ans.

Statut:
Terminé (Sprint)
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
21/05/2024
Echéance:
01/01/2026
% réalisé:

100%

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

Description

Bonjour,

Le forçage du changement de mot de passe à la première connexion a toujours fonctionné au niveau de la session Windows, mais sur Scribe 2.7 ou 2.8 sans SASLAuth, ce mécanisme n'est plus possible.

Serait-il possible de forcer le changement à la première connexion au portail ?

Merci d'avance !
Laurent

Bien à vous,
Laurent


Sous-tâches

Tâche #35947: changepasswordeole.pl : modifier le shadowLastChange d'OpenLDAP au lieu du pwdLastSet en mode non SASLFerméJoël Cuissinat

Tâche #35948: Réactiver les options "Changement de mot de passe à la première connexion" dans toutes les interfacesFerméJoël Cuissinat


Demandes liées

Lié à Distribution EOLE - Scénario #35657: Scribe : Les options "Changement de mot de passe à la première connexion" devraient être masquées si la délégation d’authentification SASL est désactivée Terminé (Sprint) 01/10/2022 01/01/2024

Révisions associées

Révision aee5b0c9 (diff)
Ajouté par Joël Cuissinat il y a presque 2 ans

changepasswordeole.pl : update OpenLDAP shadowLastChange

Ref: #35906

Historique

#1 Mis à jour par Joël Cuissinat il y a presque 2 ans

Proposition de Christophe : identifier un attribut OpenLDAP pouvant être utilisé en tant que sémaphore sans toutefois empêcher l'authentification EoleSSO.
Une fois authentifié, le portail (dispacher) pourrait vérifier cet attribut et rediriger l'utilisateur vers EOE si nécessaire.

#2 Mis à jour par Joël Cuissinat il y a presque 2 ans

L'attribut pourrait être shadowLastChange avec une règle à définir (exemple : le mot de passe a plus de 40 jours).
Encore faut-il qu'il soit mis à jour !

=> proposition de patch sur le script perl /usr/sbin/changepasswordeole.pl à intégrer :

    use Time::Piece;
    &modify_password( $openldap, $openldap_entry->dn, 'shadowLastChange',int(localtime->epoch / 86400));

Dans ce cas, le travail côté PCLL serait de rétablir les options de changement de mot de passe (cf. #35657 !) et de faire en sorte que lors de leur application, cet attribut soit mis à jour avec une valeur convenue (zéro ?).

the value of shadowLastChange is replaced with the number of days between January 1, 1970 and the day when the user password is updated.

#3 Mis à jour par Joël Cuissinat il y a presque 2 ans

  • Lié à Scénario #35657: Scribe : Les options "Changement de mot de passe à la première connexion" devraient être masquées si la délégation d’authentification SASL est désactivée ajouté

#4 Mis à jour par Laurent Brillard il y a presque 2 ans

En complément de cette demande, afin de récupérer le paramètre shadowLastChange dans l'OpenLDAP de Scribe 2.7 et 2.8, Christophe a ajouté au fichier /usr/sbin/changepasswordeole.pl ligne 185 :

use Time::Piece;
&modify_password( $openldap, $openldap_entry->dn, 'shadowLastChange',int(localtime->epoch / 86400));

Nous l'avons déjà déployé mais ce serait bien si cela pouvait être remis en standard dans le cas où OpenLDAP contient toujours l'authentification (mode SASLAuth coupé).

Merci !
Laurent

#5 Mis à jour par Laurent Brillard il y a presque 2 ans

Pour utiliser shadowLastChange, une règle de la DNE nous demande de forcer le changement de mot de passe au bout de 3 ans.
Christophe a traité sur edispatcher.

Donc le forçage du changement de mot de passe pourrait être fait en positionnant shadowLastChange à plus de 3 ans ?

#6 Mis à jour par Joël Cuissinat il y a presque 2 ans

Dans les interfaces, c'est toujours sur une initialisation ou un changement de mot de passe qu'il est possible demander un changement forcé, on passe forcément par donc forcément par changepasswordeole.pl pour les comptes AD.
FIXME : en 2.7.2 c'est désactivé par défaut pour tous les modes !

Sur EOLE ≥ 2.8.0, le script est appelé avec "1" en 3ème paramètre. On pourrait donc jouer sur la valeur du shadowLastChange à cet endroit.

Il suffirait :

1. de forcer la variable creole forced_password_modification_allowed à oui (cela évite d'aller re-modifier tout ce qui a été touché dans #35657)

root@scribe:~# rgrep forced_password_modification_allowed /usr/share/eole/creole/distrib/
/usr/share/eole/creole/distrib/ldapconf.conf:forced_password_modification_allowed=%%getVar('ldap_sasl_auth_delegation', 'non')

2. gérer le + de 3 ans dans le script changepasswordeole.pl

my $last_change = int(localtime->epoch / 86400) );
if( defined $changePwd && $changePwd == 1 ) {
    $last_change = $last_change - 1095
}
&modify_password( $openldap, $openldap_entry->dn, 'shadowLastChange',
    $last_change );

#7 Mis à jour par Laurent Brillard il y a presque 2 ans

Parfait !

Si cela peut être mis sur 2.8, on est prêt pour tester.

Merci !

#8 Mis à jour par Joël Cuissinat il y a presque 2 ans

  • Tracker changé de Demande à Scénario
  • Echéance mis à 01/01/2026
  • Assigné à mis à Joël Cuissinat
  • Version cible mis à Carnet MENSR
  • Release mis à EOLE 2.8.0
  • Points de scénarios mis à 1.0

#9 Mis à jour par Laurent Brillard il y a presque 2 ans

Bonjour Joël,

Pour être sûr de bien comprendre... après mise à jour candidate, la variable forced_password_modification_allowed n'existe pas. Il faut la créer à la main ?
CreoleSet forced_password_modification_allowed oui

Merci
Laurent

#10 Mis à jour par Joël Cuissinat il y a presque 2 ans

Laurent Brillard a écrit :

Bonjour Joël,

Pour être sûr de bien comprendre... après mise à jour candidate, la variable forced_password_modification_allowed n'existe pas. Il faut la créer à la main ?
CreoleSet forced_password_modification_allowed oui

Merci
Laurent

Non, il n'y a rien à faire, il s'agit uniquement d'une variable interne au code python qui était calculée à partir de la variable Creole ldap_sasl_auth_delegation (qui est à non dans votre environnement) que j'ai forcée à oui, cf. les commits dans la sous-tâche : #35948.
J'ai fait au plus rapide, on pourrait assez simplement une variable si quelqu'un en a l'utilité.

#11 Mis à jour par Laurent Brillard il y a presque 2 ans

Ah...

Parce que sur un Scribe 2.8, avec ldap_sasl_auth_delegation = non, quand je modifie un mdp élève, cela laisse shadowLastChange à 0

Alors je me demandais si cela venait de la configuration ou alors des tests qui devraient amener à modifier cette variable ?

#12 Mis à jour par Laurent Brillard il y a presque 2 ans

Bonjour,

Un petit retour d'usage : le forçage de shadowLastChange à 0 est parfait dans notre contexte et est bien interprété par edispatcher pour afficher EOE.

Merci !

#13 Mis à jour par Joël Cuissinat il y a presque 2 ans

  • Statut changé de Nouveau à Terminé (Sprint)
  • Version cible changé de Carnet MENSR à Livraison MENSR 30/06/2024

Validé par La Réunion ;)

Formats disponibles : Atom PDF