Mapping des rôles avec memberURL
Bonjour à tous.
Ma question concerne l'authentification sur une appli JEE à l'aide du framework Spring LDAP.
Structure de l'annuaire utilisé :
Code:
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:
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> |