Bonjour la team,

j'ai une application pour laquelle j'utilise une identification via mon application ou LDAP. Cette identification fonctionne par rapport au mot de passe utilisateur, mais je rencontre un problème pour la gestion des rôles.
En effet, quand je me connecte via un utilisateur ayant un compte sur mon application, les rôles sont bien récupérés et l'utilisateur peut voir après identification les menus qui lui sont bien destinés.

Par contre, si mon utilisateur est identifié sur le LDAP, ses rôles ne sont pas récupérés et aucun menu se s'affiche.

Voici ma configuration:

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<application-policy name="monAppli">
		<authentication>
			<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="sufficient">
				<module-option name = "dsJndiName">jdbc/monAppliDS</module-option>							            
	                         <module-option name = "principalsQuery">
                                        SELECT PASSWORD, LANGUAGE language 
                                        FROM USER WHERE LOGIN=?
                                </module-option>
				<module-option name = "rolesQuery">
					SELECT ROLE.ROLE_ID, 'Roles' 
					FROM ROLE, USER 
					WHERE USER.LOGIN=? 
						AND USER.ENABLED = 1
						AND USER.FK_ROLE_ID=ROLE.ID 					
				</module-option>	
				<module-option name = "principalClass">org.monAppli.framework.security.UserPrincipal</module-option>				
				<module-option name="suspendResume">false</module-option>
				<module-option name="password-stacking">useFirstPass</module-option>
				<module-option name="hashAlgorithm">MD5</module-option>
				<module-option name="hashStorePassword">false</module-option>
				<module-option name="hashUserPassword">true</module-option>
				<module-option name = "hashEncoding">HEX</module-option>				
			</login-module>	
			
			<login-module code = "org.jboss.security.auth.spi.LdapLoginModule" flag="required">	

				<module-option name = "dsJndiName">jdbc/monAppliDS</module-option>
				<module-option name = "rolesQuery">
					SELECT ROLE.ROLE_ID, 'Roles' 
					FROM ROLE, USER 
					WHERE USER.LOGIN=? 
						AND USER.ENABLED = 1
						AND USER.FK_ROLE_ID=ROLE.ID 					
				</module-option>				
               		        <module-option name="java.naming.provider.url">xxxxxxxxxx</module-option>				
                		<module-option name="bindDN">uid=xxxxx,OU=xxxxxx,O=xxxx,DC=fr</module-option>
               			<module-option name="bindCredential">xxxxxx</module-option>
               		         <module-option name="baseCtxDN">OU=activePersons,OU=persons,O=xxxxx,DC=fr</module-option>
                		<module-option name="baseFilter">(&amp;(employeeNumber={0})(accountDisabled=FALSE))</module-option>
                                <module-option name="rolesCtxDN">OU=activePersons,OU=persons,O=xxxxx,DC=fr</module-option>
                                <module-option name="roleFilter">(sAMAccountName={0})</module-option>
                                <module-option name="roleAttributeID">memberOf</module-option>
                                <module-option name="roleAttributeIsDN">true</module-option>
                                <module-option name="roleNameAttributeID">cn</module-option>
                                <module-option name="searchScope">ONELEVEL_SCOPE</module-option>
                                <module-option name="allowEmptyPasswords">false</module-option>
                                <module-option name="password-stacking">useFirstPass</module-option>
                                <module-option name="java.naming.security.protocol">ssl</module-option>								
            </login-module>
			
		</authentication>
	</application-policy>
Dans cette partie de code, j'ai ajouté la partie en gras pour récupérer mes rôles lors de la connection à LDAP, mais ça ne fonctionne pas. Avez une idée du problème ?

Berni.