Bonjour à tous,
je voudrais mettre en place l'identification de mon application via Realm avec glassfish 3.1.2 mais je bloque sur un problème que je ne comprends pas trop.
Je veux obliger l'identification lorsque l'on essaye d'accéder à une page du dossier test.
Ma page de login se situe à la racine de mon site.
Lorsque l'on affiche la page par exemple test/welcome.jsf, on arrive bien sur notre page login.jsf mais lors du clique sur le bouton pour se connecter, l'adresse renvoyée est : http://localhost:8080/Appli/test/j_security_check et la page login reste affichée...
Qu'ai-je fait de maladroit ?
Web.xml
glassfish-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
49
50
51
52
53
54
55
56
57
58
59
60
61 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Appli</display-name> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern> </servlet-mapping> <context-param> <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>client</param-value> </context-param> <context-param> <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name> <param-value>resources.application</param-value> </context-param> <listener> <listener-class>com.sun.faces.config.ConfigureListener</listener-class> </listener> <!-- Security --> <security-constraint> <web-resource-collection> <web-resource-name>PagesLogin</web-resource-name> <description> Veuillez vous identifier. </description> <url-pattern>/test/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>roleuser</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <realm-name>security</realm-name> <form-login-config> <form-login-page>/login.jsf</form-login-page> <form-error-page>/login.jsf</form-error-page> </form-login-config> </login-config> <security-role> <description>Role user</description> <role-name>roleuser</role-name> </security-role> </web-app>
fichier.sql
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 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd"> <glassfish-web-app error-url=""> <context-root>/Appli</context-root> <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> <security-role-mapping> <role-name>roleuser</role-name> <group-name>USER</group-name> </security-role-mapping> </glassfish-web-app>
J'ai configuré le realm de glassfish comme ceci :
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 create table usertable ( username varchar(128) NOT NULL CONSTRAINT USER_PK PRIMARY KEY , password varchar(128) NOT NULL ); create table grouptable( username varchar(128) NOT NULL, groupid varchar(128) NOT NULL, CONSTRAINT GROUP_PK PRIMARY KEY(username, groupid), CONSTRAINT USER_FK FOREIGN KEY(username) REFERENCES usertable(username) ON DELETE CASCADE ON UPDATE RESTRICT ); insert into usertable(login,password) values ('toto', 'toto'); insert into grouptable(username,groupid) values ('toto', 'USER');
Realm Name: security
JAAS Context: jdbcReal
JNDI: jdbc/derbyconnect
User Table: usertable
User Name Column: username
Password Column: password
Group Table: grouptable
Group Name Column: groupid
ps : je me sers du JNDI dans mon fichier de persistance et cela marche parfaitement avec ma base de données Derby.
je vous remercie par avance.
Partager