Project

General

Profile

Tâche #9105

Updated by Bruno Boiget over 9 years ago

Problème remonté par Christophe Léon suite au passage du serveur Seshat de la réunion en version 2.3.14 :

<pre>
Ce matin après MAJ du eole-sso la connexion OTP ne fonctionne plus
après 4 heures de fouille... j'arrive à la conclusion suivante

le pb ne vient pas de OTP, il me retourne bien AUTH SUCCESS

Je dirais plutot de la fonction get_attribute_set de authserver.py

Lors d'une connexion OTP

Le trace me donne l'appel suivant
Oct 1 09:46:25 seshat eolesso: [-] DEBUG -> entering get_attribute_set((<authserver.SSOSessionManager object at 0x3e2f790>, 'urn:fi:ac-reunion:et-seshat.ac-reunion.fr:1.0', 'ldap.ac-reunion.fr:o=gouv,c=fr'), {})

Ce dernier me retourne
{'optional_attrs': {},
'branch_attrs': {'UAI': 'ou', 'rne': 'ou', 'RNE': 'ou', 'ENTPersonStructRattach': 'ou'},
'user_attrs': {'FederationKey': 'FederationKey', 'uid': 'uid'}}

EN analysant le code
AVANT
if idp_ident == config.IDP_IDENTITY:
# cas particulier : utilisation pour retrouver un utilisateur local
# (si recherche suite à une méthode d'authentification non LDAP)
return {'user_attrs':{'uid':'uid'}, 'branch_attrs':config.SEARCH_BASE_ATTRS, 'optional_attrs':{}}

MAINTENANT
il n'y a plus de return {'user_attrs':{'uid':'uid'}, 'branch_attrs':config.SEARCH_BASE_ATTRS, 'optional_attrs':{}}

mais un calcul qui me retourne 'user_attrs': {'FederationKey': 'FederationKey', 'uid': 'uid'}}

La ou ca coince c'est dans le authenticate_federated_user ou il y a ce test
if search_attrs and (len(search_attrs) == len(attr_set['user_attrs'])):

du coup search_attrs = {'uid': u'cleon'}
et attr_set[ 'user_attrs' ] = {'FederationKey': 'FederationKey', 'uid': 'uid'}

Pourquoi lors de OTP on va regarder les attributs de fédération SAML ?
</pre>

Le return dans le cas où idp_ident == config.IDP_IDENTITY: a effectivement été oublié lors des corrections pour la gestion d'attributs de fédération 'externes' (cf demande liée)

Back