Salut,
J'ai crée un petit projet de test pour essayer de faire une appli web avec authentification suivant un annuaire ldap, mais ça ne marche pas.
Le problème étant qu'il n'y aucune prise en compte des paramètres de sécurité, c'est à dire que je peux accéder à toute les pages de mon appli comme si de rien n'était.
C'est un projet de test, donc il y a pas grand chose, et je vais tout mettre histoire de passer à coté de rien.
Alors j'ai juste trois jsp (identification, error, et test), test étant la ressource à accéder une fois qu'on est identifié. J'ai pas fait de servlet parceque j'ai la flemme & que c'est juste un test.
error.jsp :
identification.jsp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <html> <head> <% response.setHeader("Cache-Control", "no-cache"); //HTTP 1.1 response.setHeader("Pragma", "no-cache"); //HTTP 1.0 response.setDateHeader("Expires", 0); //prevents caching at the proxy server %> </head> <body> <h1>erreur</h1> </body> </html>
test.jsp :
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 <html> <head> <% response.setHeader("Cache-Control", "no-cache"); //HTTP 1.1 response.setHeader("Pragma", "no-cache"); //HTTP 1.0 response.setDateHeader("Expires", 0); //prevents caching at the proxy server %> </head> <body> <form method="POST" action="j_security_check"> <table> <tr> <td>Login :</td> <td><input type="text" name="j_username"></td> </tr> <tr> <td>Mot de passe :</td> <td><input type="password" name="j_password"></td> </tr> <tr> <td><input type="submit" value="Entrer"></td> <td><input type="reset" value="Annuler"></td> </tr> </table> </form> </body> </html>
Ensuite les fichiers de conf :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <html> <head> <% response.setHeader("Cache-Control", "no-cache"); //HTTP 1.1 response.setHeader("Pragma", "no-cache"); //HTTP 1.0 response.setDateHeader("Expires", 0); //prevents caching at the proxy server %> </head> <body> <h1>blabla</h1> </body> </html>
web.xml (complet)
conf.xml (la partie intéressante)
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 <web-app> <security-constraint> <display-name>Tomcat Server Configuration Security Constraint</display-name> <web-resource-collection> <web-resource-name>Protected Area</web-resource-name> <!-- Define the context-relative URL(s) to be protected --> <url-pattern>/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>*</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> <!-- Login configuration uses form-based authentication --> <login-config> <auth-method>FORM</auth-method> <realm-name>Form-Based Authentication </realm-name> <form-login-config> <form-login-page>/identification.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> <!-- Security roles referenced by this web application --> <security-role> <!-- <description> The role that is required to log in to the Administration Application </description> --> <role-name>*</role-name> </security-role> </web-app>
Ps : c'est la première fois que je me sers de ldap & de tomcat pour une identification, normalement je fais ça directement dans mon code métier via une base accessible par des requêtes sql.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <Realm className="org.apache.catalina.realm.JNDIRealm" debug="99" connectionURL="ldap://XX.X.XX.XXX:389" userBase="ou=XXX,dc=XXXX,dc=XX" userSubtree="true" userSearch="(uid={0})" />
J'ai tenté de remplir le conf.xml correctement, avec ces infos, fournies par mon chef, mais je me demande si la configuration est bien faite (même si ce n'est qu'un problème accessoire, puisque je devrais tout de même tomber sur la page de login)
Ici les infos fournies :
Un dernier point, quand je me rend sur ma page de login manuellement, en tapant son adresse dans la barre de naviguation, et que je valide le formulaire, je tombe sur une page d'erreur typevoici le query que on utilise
ldap://XX.X.XX.XXX/DC=XXX,DC=XXX?XXX?XXX?(objectClass=XXX)
Voila, j'ai fini mon pavé, si quelqu'un pouvait jeter un coup d'oeil je lui en serais très reconnaissant.Etat HTTP 404 - /ldap_test/j_security_check
type Rapport d'état
message /ldap_test/j_security_check
description La ressource demandée (/ldap_test/j_security_check) n'est pas disponible.
Merci d'avance.
Bdloul
Partager