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 :

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
 
	<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 :

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
 
  <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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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