Bonjour à tous.
Ma question concerne l'authentification sur une appli JEE à l'aide du framework Spring LDAP.

Structure de l'annuaire utilisé :
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
Mes utilisateurs sont donc créés sous "brancheUsers". Cette branche a pour sous-branches les groupes de l'appli gp1 et 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>