Bonjour,
J'essaye de mettre en place un système d'authentification via LDAP pour mes web services JAX-RS déployé sur Glassfish 3.1.
Pour cela j'ai ajouter un nouveau Realm depuis l'interface d'administration du serveur :
Ensuite j'ai configurer mes fichier web.xml et sun-web.xml comme suit.
web.xml :
sun-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
45
46
47
48 <web-app> ... <description>JAX-RS Tools Generated - Do not modify</description> <servlet-name>JAX-RS Servlet</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.spi.container.ResourceFilters</param-name> <param-value>com.sun.jersey.api.container.filter.RolesAllowedResourceFilterFactory</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>JAX-RS Servlet</servlet-name> <url-pattern>/resources/*</url-pattern> </servlet-mapping> <!-- which resources should be protected --> <security-constraint> <web-resource-collection> <web-resource-name>Secure</web-resource-name> <!-- be specific about the urls and methods here --> <url-pattern>/resources/ra/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> <http-method>PUT</http-method> <http-method>DELETE</http-method> </web-resource-collection> <auth-constraint> <role-name>intervenant</role-name> <role-name>secretariat</role-name> <role-name>admin</role-name> </auth-constraint> </security-constraint> <!-- which realm to use for basic auth --> <login-config> <auth-method>BASIC</auth-method> <realm-name>ldapRealm</realm-name> </login-config> <security-role> <role-name>intervenant</role-name> </security-role> <security-role> <role-name>secretariat</role-name> </security-role> <security-role> <role-name>admin</role-name> </security-role> </web-app>
Pour définir les rôles autorisés pour chque méthodes de mon web services j'utilise les annotations @RolesAllowed.
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 <sun-web-app> <context-root>/IntranetWebService</context-root> <security-role-mapping> <role-name>intervenant</role-name> <group-name>intervenant</group-name> </security-role-mapping> <security-role-mapping> <role-name>secretariat</role-name> <group-name>secretariat</group-name> </security-role-mapping> <security-role-mapping> <role-name>admin</role-name> <group-name>admin</group-name> </security-role-mapping> <class-loader delegate="true" /> <jsp-config> <property name="keepgenerated" value="true"> <description>Keep a copy of the generated servlet class java code.</description> </property> </jsp-config> </sun-web-app>
Quand j'essaye d'accéder à une des ressources du web service le navigateur me demande de saisir l'identifiant et mot de passe puis me redirige vers une page "erreur 403".
J'ai essayer avec un simple file realm : ca fonctionne très bien. le problème doit donc venir de mon realm Ldap. J'ai essayé plein de configuration sur le net rien ne marche.
Merci d'avance pour votre aide.
Partager