Bonjour à tous.
Ma question concerne l'authentification sur une appli JEE à l'aide du framework Spring LDAP.
Structure de l'annuaire utilisé :
Mes utilisateurs sont donc créés sous "brancheUsers". Cette branche a pour sous-branches les groupes de l'appli gp1 et gp2.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 root - brancheUsers -- gp1 --- uid1-1 --- uid1-2 --- ... -- gp2 --- uid2-1 --- uid2-2 --- ... - brancheGroups -- cn = gp1 -- cn = gp2
L'association utilisateur-groupe est censée être faite dans "brancheGroups", via des uniqueMembers.
Quand je tente de me connecter avec un utilisateur uid1-1 défini dans le cn=gp1 par un uniqueMember, tout se passe bien.
Le problème, c'est que dans les cn=gpX, j'ai directement un attribut memberURL qui fait référence à la banche "gpX,brancheUsers". Si l'utilisateur uid1-2, associé au groupe gp1 grâce à cet attribut memberURL, tente de se connecter, il est alors boulé : l'utilisateur uid1-2 est bien trouvé, mais Spring LDAP ne lui associe pas de rôle, car il n'est pas défini en temps que uniqueMember dans le cn=gp1.
Est-ce que vous savez comment je peux faire le mapping entre uid1-2 et gp1 via le memberURL présent dans le cn=gp1, avec Spring LDAP ?
Merci d'avance.
NB. : j'utilise un provider customisé issu du LdapAuthenticationProvider de base, paramétré comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <bean id="ldapAuthProvider" class="...MyAuthenticationProvider"> <security:custom-authentication-provider/> <constructor-arg> <bean class="org.springframework.security.providers.ldap.authenticator.BindAuthenticator"> <constructor-arg ref="ldapServerContextSource"/> <property name="userSearch" ref="userSearch"/> </bean> </constructor-arg> <constructor-arg> <bean class="org.springframework.security.ldap.populator.DefaultLdapAuthoritiesPopulator"> <constructor-arg ref="ldapServerContextSource"/> <constructor-arg value="${dn_groupe}"/> <property name="groupRoleAttribute" value="cn"/> <property name="groupSearchFilter" value="(uniqueMember={0})"/> <property name="searchSubtree" value="true"/> </bean> </constructor-arg> </bean> <bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch"> <constructor-arg index="0" value="" /> <constructor-arg index="1" value="(uid={0})" /> <constructor-arg index="2" ref="ldapServerContextSource"/> </bean>
Partager