Projet

Général

Profil

Tâche #36468

Scénario #36299: [AAF] Prise en compte d'un nouvel attribut ENTEleveGroupes de l'AAF

Étude

Ajouté par Benjamin Bohard il y a environ un an. Mis à jour il y a 10 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
01/10/2022
Echéance:
% réalisé:

100%

Restant à faire (heures):
0.0

Historique

#1 Mis à jour par Benjamin Bohard il y a environ un an

  • Statut changé de Nouveau à En cours

#2 Mis à jour par Benjamin Bohard il y a environ un an

L’ajout ne pose aucun problème sur 2.6, dans un contexte ou seul OpenLDAP héberge l’identité.

Par contre, que faire de l’attribut dans les versions supérieures avec synchronisation sur un annuaire active directory ?
Il y faut modifier la configuration de LSC pour que la création d’un utilisateur avec les nouveaux attributs soit propagée.

#3 Mis à jour par Joël Cuissinat il y a environ un an

Je pense que la demande est purement OpenLDAP Scribe/Sehat, il n'y a pas à s'occuper de AD.

Il faudra peut-être mettre un point d'attention à ce que le schéma du Seshat soit mis à jour avant ceux des Scribe ?

#4 Mis à jour par Benjamin Bohard il y a environ un an

Lors de mon premier test naïf, j’ai uniquement modifié le schéma côté OpenLDAP. Sur 2.6, l’ajout d’un utilisateur avec des groupes (ajoutés en dur dans le code du backend Scribe pour le test) ne pose pas de problème.
En 2.8, la même manipulation provoque une erreur de LSC ; l’utilisateur est bien ajouté dans l’annuaire OpenLDAP mais l’étape de synchronisation notifiait un problème de lecture de la fiche LDAP de l’utilisateur ajouté. C’est peut-être un problème temporaire lié au besoin de redémarrer un service…

#5 Mis à jour par Benjamin Bohard il y a environ un an

La piste du redémarrage nécessaire de service semble se confirmer : la synchronisation via LSC est fonctionnelle une fois le service eole-lsc redémarré.

#6 Mis à jour par Benjamin Bohard il y a environ un an

Concernant l’interdépendance entre seshat et scribe, deux observations :
- seshat est capable de répliquer l’annuaire du Scribe modifié (avec l’attribut supplémentaire) même si lui-même ne dispose pas de la modification du schéma ;
- la mise à jour du schéma côté Seshat alors que la réplication a déjà été effectuée aboutit à une erreur lors du reconfigure ;

run-parts: executing /usr/share/eole/posttemplate/02-annuaire reconfigure
Start Systemd service slapd                                                                                                                 [  OK  ]
Result: Server is unwilling to perform (53)
Additional info: shadow context; no update referral
Une erreur est survenue au changement de mot de passe de l'utilisateur "reader" 

run-parts: /usr/share/eole/posttemplate/02-annuaire exited with return code 1
Erreur : posttemplate

#7 Mis à jour par Benjamin Bohard il y a environ un an

Petit complément : l’erreur au reconfigure sur le Seshat intervient indépendamment de la mise à jour ou non côté Scribe. Après mise en place de la synchronisation entre le Scribe et Seshat, le reconfigure de ce dernier plante sur l’étape du changement de mot de passe (potentiellement sur toute opération modifiant l’annuaire).

#8 Mis à jour par Benjamin Bohard il y a environ un an

Si le comportement observé en production est différent de celui décrit précédemment, il faudrait pouvoir identifier ce qui fait la différence. En l’état, il est compliqué de mettre en place une modification de l’annuaire sans pouvoir valider qu’elle pourra s’appliquer.

#9 Mis à jour par Benjamin Bohard il y a environ un an

En fait, le message se révèle finalement assez simple :
- shadow context => avec la synchronisation activée, l’annuaire n’est pas éditable directement.

Pour la mise à jour du mot de passe, il faut désactiver la synchronisation :
- commenter l’inclusion du fichier replication.conf
- redémarrer le service

Après l’édition, il faut décommenter l’inclusion et redémarrer le service.

Comment est-ce géré habituellement ?

#10 Mis à jour par Benjamin Bohard il y a environ un an

Une fois ce problème corrigé, il semble que l’odre de mise à jour des schémas (sur Seshat et Scribe) soit indifférent.

#11 Mis à jour par Benjamin Bohard il y a environ un an

Autre partie délicate : la suppression des valeurs de l’attribut EleveGroupes dans le cas d’une édition via l’EAD (est-ce que c’est un cas d’usage dans le cas d’un import AAF ?).

#12 Mis à jour par Benjamin Bohard il y a environ un an

Dans le même ordre d’idée, que faut-il faire lors de l’inscription d’un élève à une option¹ via l’EAD ?

¹ Sauf erreur, le champ ENTEleveGroupes est associé au concept d’option seulement, et pas au concept de groupe.

#13 Mis à jour par Benjamin Bohard il y a environ un an

Encore un problème dont la gravité doit dépendre des cas d’usage : les différentes opérations sur les groupes ne respectent pas la casse.

Dans le fichier AAF, si les options sont déclarées en majuscules, ces valeurs sont reprises telles quelles dans l’attribut EleveGroupes. Par contre, via l’édition dans l’EAD 2, toutes les valeurs sont transformées en minuscules. Il y a donc une modification de la valeur si on gère les options via l’EAD 2.

#14 Mis à jour par Benjamin Bohard il y a environ un an

Le traitement appliqué au nom est le suivant (eoletools.ok_groupe) :

def ok_groupe(groupe, gtype='g'):
    """ 
    portage de la fonction PHP originale
    """ 
    groupe = groupe.lower()
    if gtype == 'n':
        # niveau coupé au 1er espace
        groupe = groupe.split()[0]
    groupe = groupe.split('(')[0]     #parenthèse ouvrante
    groupe = groupe.split(',')[0]     #virgule
    groupe = groupe.replace(' ', '')  #espaces
    groupe = groupe.replace('*', 'e') #etoile, ex : mp*
    groupe = groupe.replace('.', '')  #point
    groupe = groupe.replace(':', '')  #2points
    groupe = groupe.replace(';', '')  #point-virgule
    groupe = groupe.replace('=', '')  #égal
    groupe = groupe.replace('"', '')  #double-quotes
    groupe = groupe.replace("'", '')  #apostrophes
    groupe = groupe.replace('$', '')  #dollar
    groupe = groupe.replace('+', '')  #plus
    groupe = groupe.replace(')', '')  #parenthèse fermante
    groupe = groupe.replace('&', '')  #esperluette
    groupe = groupe.replace('/', '-') #slash
    # caractères interdits en début de nom
    while groupe.startswith('-') or groupe.startswith('_'):
        groupe = groupe[1:]
    # groupes 100% numériques
    if groupe.isdigit():
        # ajout du prefixe "type" 
        groupe = gtype+groupe
    # FIXME
    if len(groupe) > 20:
        return groupe[0:20]
    return groupe

Il y a notamment une troncature de groupe qui intervient à la fin.

#15 Mis à jour par Benjamin Bohard il y a environ un an

La pertinence de modifier également le traitement des fichiers aaf pour le Thot et le Seth ne me semble pas évidente dans le cadre de cette demande. Concernant Thot, le schéma est supposé retranscrire le SDET, d’où le doute sur la pertinence à le modifier.

#16 Mis à jour par Benjamin Bohard il y a environ un an

  • Statut changé de En cours à À valider

#17 Mis à jour par Christophe LEON il y a environ un an

Bonjour,
merci d'avoir pris en compte cette demande,
Le besoin concerne Scribe.
Pour Thot , la notion de groupes devraient être présents , mais je ne suis pas le sachant sur ce point,

Cdlt
Christophe

#18 Mis à jour par Laurent Gourvenec il y a environ un an

  • Statut changé de À valider à En cours

#19 Mis à jour par Benjamin Bohard il y a environ un an

Pour l’AAF et le Scribe, l’attribut est presque correctement géré : un problème est apparu sur la création du compte avec une initialisation de l’attribut EleveGroupes injustifiée (il semble préférable de ne pas renseigner l’attribut si aucune valeur n’y est associée).

Pour les autres sources de données (CSV dans le cas du test automatisé), l’attribut EleveGroupes n’était pas renseigné puisque le champ source ENTEleveGroupes n’est pas présent.

Comme le champ ENTEleveGroupes de l’AAF se retrouve lié à la notion d’option dans l’annuaire du Scribe, il semble logique d’utiliser les champs options des autres formats de données pour initialiser l’attribut EleveGroupes.

#20 Mis à jour par Benjamin Bohard il y a 12 mois

Après importation à partir de différentes sources, il est apparu que l’approche développée pour AAF est trop complexe pour être généralisée pour les autres sources.

L’initialisation de l’attribut EleveGroupes était gérée, comme tous les attributs de la fiche eleve, indépendamment du traitement des groupes. Cette approche ne permet pas d’assurer la cohérence entre liens dans les groupes¹ et la fiche utilisateur de manière générique pour toutes les sources de données.

1. attributs memberId dans les fiches des groupes

#21 Mis à jour par Benjamin Bohard il y a 12 mois

  • Statut changé de En cours à À valider

#22 Mis à jour par Emmanuel GARETTE il y a 10 mois

  • Statut changé de À valider à Résolu
  • % réalisé changé de 0 à 100

#23 Mis à jour par Joël Cuissinat il y a 10 mois

  • Statut changé de Résolu à Fermé
  • Restant à faire (heures) mis à 0.0

Formats disponibles : Atom PDF