Evolution #4950
Ajouter la possibilité de rechercher des attributs dans une source de données alternative en cas de fédération
Description
Suite à la réunion avec différentes académies de la mutualisation Envole, il a été décidé d'apporter des modifications pour permettre d'effectuer une fédération depuis les téléservices vers Seshat.
Dans cette cinématique, il faudrait pouvoir retrouver un utilisateur à partir du vecteur FrEduVecteur. Comme cette donnée n'est pas présente dans l'annuaire Seshat, on pourrait envisager de faire la recherche dans une base de données (équivalent inversé de la base IntegrTeleservices.db sur seshat).
Demandes liées
Révisions associées
ajout de la gestion d'attributs de fédération externes (ref #4950)
finalisation de la gestion des attributs de fédération externes (ref #4950)
suppression ligne de debug (fixes #4950)
ajout de la gestion d'attributs de fédération externes (ref #4950)
Conflicts:
i18n/fr/LC_MESSAGES/eolesso.mo
finalisation de la gestion des attributs de fédération externes (ref #4950)
suppression ligne de debug (fixes #4950)
Historique
#1 Mis à jour par Bruno Boiget il y a environ 11 ans
- Echéance changé de 08/03/2013 à 01/03/2013
#2 Mis à jour par Luc Bourdot il y a environ 11 ans
- Echéance changé de 01/03/2013 à 08/03/2013
#3 Mis à jour par Luc Bourdot il y a environ 11 ans
- Echéance changé de 08/03/2013 à 15/03/2013
#4 Mis à jour par Bruno Boiget il y a environ 11 ans
fonctionnement retenu:
un peu à la façon des attributs calculés, il est possible d'ajouter des sources d'attributs externes pour la fédération dans le répertoire /usr/share/sso/external_attrs.
Chaque fichier doit comporter une classe ExtAttr comportant une fonction get_local_attrs(values). Celle-ci prend en paramètre la liste des valeurs de l'attribut externe (définies dans la réponse SAML initiant la fédération) et renvoie un dictionnaire d'attributs (clé:valeurs).
le nom du fichier (sans .py) définit le nom de l'attribut 'externe'. Lors d'une fédération, si un attribut correspondant à un de ces fichiers est reçu dans le vecteur de fédération, eolesso va appeler la fonction get_local_attrs et fusionner les attributs retournés aux attributs du vecteur de fédération.
voir l'exemple fourni en pièce jointe dans le cas d'une fédération depuis le guichet ATEN.
Dans cet exemple, une base de données FrEduVecteur -> intid est créée au préalable depuis les données de l'annuaire fédérateur (script lancé journalier sur Seshat).
- Si l'utilisateur est un responsable d'élèves, L'attribut externe (FrEduVecteur) va renvoyer l'identifiant ENT (intid) correspondant, ainsi que la liste des établissement associés (en tant que nouvel attribut: ENTStructRattachId).
- Dans le cas d'un élève, intid et son établissement de rattachement sont directement pris dans le vecteur.
Le jeu d'attribut suivant est défini (teleservices.ini) et associé au fournisseur d'identité du guichet ATEN. Il permettra de retrouver l'utilisateur une fois intid récupéré et de lui associer la liste des établissements de l'utilisateur :
[user_attrs] intid = intid --> le fournisseur d'identité fournira donc FrEduVecteur, intid sera calculé avant la recherche de l'utilisateur dans le référentiel du fournisseur de service. [optional] ENTStructRattachId = ENTStructRattachId --> attributs ajoutés aux attributs ldap de l'utilisateur local trouvé.
Ces informations permettront ensuite de proposer à l'utilisateur le choix de l'établissement sur lequel il veut se connecter par l'intermédiaire de l'application dispatcher.
Rqe: Dans le cas d'un parent d'élève accédant à Seshat par fédération depuis le guichet ATEN, on utilisera sur seshat un seul des comptes correspondants (un parent peut en avoir dans plusieurs établissements), mais on conservera la liste de tous les établissements accessibles. Le fait que l'attribut intid soit identique sur tous les établissement permettra d'accéder à n'importe lequel de ses comptes par fédération après choix de l'établissement à atteindre.
#5 Mis à jour par Bruno Boiget il y a environ 11 ans
- Fichier FrEduVecteur.py Voir ajouté
#6 Mis à jour par Joël Cuissinat il y a environ 11 ans
- Echéance
15/03/2013supprimé
#7 Mis à jour par Bruno Boiget il y a environ 11 ans
- Statut changé de Nouveau à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit 084d44a47a9feeff9b4c59647870e976b3216089.
#8 Mis à jour par Redmine Admin il y a environ 11 ans
- Echéance mis à 29/03/2013
#9 Mis à jour par Bruno Boiget il y a environ 11 ans
Après éclaircissements de Christophe sur la question des responsables, il semble qu'on ne puisse pas compter sur l'attribut intid pour les retrouver sur l'ensemble des établissements (il semble qu'ils possèdent un intid spécifique par établissement).
Il faut envisager une autre solution pour retrouver faire la fédération vers l'établissement. Quelques pistes:
- trouver un autre vecteur de fédération qui soit identique sur tous les établissements.
- avoir un mécanisme dans eolesso qui permette à l'utilisateur de choisir un établissement lors de la fédération sur seshat (intégrer le dispatcher dans eole-sso)
- autre ?
#10 Mis à jour par Bruno Boiget il y a environ 11 ans
- Statut changé de Résolu à À valider
- % réalisé changé de 100 à 60
#11 Mis à jour par Bruno Boiget il y a environ 11 ans
- Version cible changé de Mises à jour 2.3.9 à Mises à jour 2.3.10
#12 Mis à jour par Bruno Boiget il y a presque 11 ans
- Statut changé de À valider à Résolu
- % réalisé changé de 60 à 100
Appliqué par commit 8e17e55e32097ba8c97f8a10e6b9cc8f07a068ba.
#13 Mis à jour par Joël Cuissinat il y a plus de 10 ans
- Statut changé de Résolu à Fermé