Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Portails Java Discussion :

Gestion des rôles pour identification sous Jboss


Sujet :

Portails Java

  1. #1
    Membre du Club
    Gestion des rôles pour identification sous Jboss
    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.

  2. #2
    Membre du Club
    J'ai trouvé la réposne à ma question, donc si ça peut aider quelqu'un, il faut :
    - garder la gesion des rôles dans le module de l'application
    - et mettre une option sur l'authentification à ldap pour faire en sorte que si l'utilisateur ne s'identifie pas à LDAP, il puisse d'identifier à son application.

    Au niveau code cela donne :

    <application-policy name="monAppli">

    <login-module code = "org.jboss.security.auth.spi.LdapLoginModule" flag="optional">
    <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>
    <login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
    <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>

    </authentication>
    </application-policy>