Project

General

Profile

Scénario #35906

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

Added by Laurent Brillard 2 months ago. Updated 12 days ago.

Status:
Terminé (Sprint)
Priority:
Normal
Assigned To:
Category:
-
Start date:
05/21/2024
Due date:
01/01/2026
% Done:

100%

Story points:
1.0
Remaining (hours):
0.00 hour
Velocity based estimate:
Release:
Release relationship:
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


Subtasks

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


Related issues

Related to 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) 10/01/2022 01/01/2024

Associated revisions

Revision aee5b0c9 (diff)
Added by Joël Cuissinat about 2 months ago

changepasswordeole.pl : update OpenLDAP shadowLastChange

Ref: #35906

History

#1 Updated by Joël Cuissinat about 2 months ago

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 Updated by Joël Cuissinat about 2 months ago

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 Updated by Joël Cuissinat about 2 months ago

  • Related to 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 added

#4 Updated by Laurent Brillard about 2 months ago

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 Updated by Laurent Brillard about 2 months ago

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 Updated by Joël Cuissinat about 2 months ago

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 Updated by Laurent Brillard about 1 month ago

Parfait !

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

Merci !

#8 Updated by Joël Cuissinat about 1 month ago

  • Tracker changed from Demande to Scénario
  • Due date set to 01/01/2026
  • Assigned To set to Joël Cuissinat
  • Target version set to Carnet MENSR
  • Release set to EOLE 2.8.0
  • Story points set to 1.0

#9 Updated by Laurent Brillard about 1 month ago

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 Updated by Joël Cuissinat about 1 month ago

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 Updated by Laurent Brillard about 1 month ago

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 Updated by Laurent Brillard 26 days ago

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 Updated by Joël Cuissinat 12 days ago

  • Status changed from Nouveau to Terminé (Sprint)
  • Target version changed from Carnet MENSR to Livraison MENSR 30/06/2024

Validé par La Réunion ;)

Also available in: Atom PDF