Bonjour,
J'aimerais récupérer les rôles par tomcat pour gérer les permissions d'accès aux différentes pages selon les groupes des utilisateurs. L'authentification ldap marche (quand les groupes ne sont pas utilisés).
Voilà mes différents bouts de codes :
web.xml :
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
|
<security-constraint>
<display-name>Test</display-name>
<web-resource-collection>
<web-resource-name>Administrative Area</web-resource-name>
<url-pattern>/admin.html</url-pattern>
<url-pattern>/blabla.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>TOTOAdmins</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<display-name>Tomcat Server Configuration Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/users/*</url-pattern>
<url-pattern>/login</url-pattern>
<url-pattern>/error</url-pattern>
<url-pattern>/welcome</url-pattern>
<url-pattern>/home.do</url-pattern>
<url-pattern>/out.do</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Form-Based Authentication </realm-name>
<form-login-config>
<form-login-page>/login</form-login-page>
<form-error-page>/error</form-error-page>
</form-login-config>
</login-config>
<security-role>
<role-name>TOTOAdmins</role-name>
</security-role>
<security-role>
<role-name>*</role-name>
</security-role>
<welcome-file-list>
<welcome-file>welcome</welcome-file>
</welcome-file-list> |
Donc on peut voir que ce que je voudrais faire, c'est que tout les utilisateurs aient accès à toutes les pages données dans les web-ressources, mais que seuls les TOTOAdmins aient accès à blabla.jsp & admin.html.
Pour l'instant quel que soit les personnes avec qui je me logue, personne n'a accès à ces deux fichiers.
server.xml :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="/portal_re" debug="0" reloadable="true" docBase="portal_re">
<Realm className="org.apache.catalina.realm.JNDIRealm"
debug="99"
connectionURL="ldap://XX.X.XX.XXX:XXX"
connectionName="cn=XXXXXX,ou=abc,dc=abcdef,dc=xyz"
connectionPassword="XXXXXXX"
userBase="ou=abc,dc=abcdef,dc=xyz"
userSearch="(name={0})"
userSubtree="true"
userRoleName="memberOf"
roleBase="ou=abc,dc=abcdef,dc=xyz"
roleSearch="(uniqueMember={0})"
roleSubtree="true"
roleName="cn"
/>
</Context> |
Dans mon arborescence ldap, chaque utilisateur possède son groupe dans le membre "memberof", et j'ai mis rolebase/search/subtree/name en fonction de comment sont entré les groupes eux mêmes (en tant qu'entité dans l'annuaire ldap).
Je me logue à mon appli avec l'utilisateur toto, qui quand je browse mon annuaire ldap, possède bien l'attribut :
1 2
|
memberOf CN=TOTOAdmins,OU=ABC,DC=ABCDEF,DC=xyz |
(il est néanmoins membre de plusieurs autre groupe (4 memberOf au total))
Je ne sais pas si ce sera d'une grande aide, mais quand je me logue sur ma page d'accueil avec l'utilisateur toto (membre de TOTOAdmins), j'ai mis un
request.getUserPrincipal()
histoire d'avoir des infos, et voilà ce que ca imprime :
GenericPrincipal[toto(CN=Administrators,OU=ABC,DC=ABCDEF,DC=xyz,
CN=TOTOAdmins,OU=ABC,DC=ABCDEF,DC=xyz,CN=Readers,CN=ABC,DC=ABCDEF,DC=xyz,CN=Users,CN=Roles,DC=ABCDEF,DC=xyz,)]
Voilà, merci d'avance.
Cordialement,
Bdloul
Partager