Authentification LDAP par Tomcat
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 :
Code:
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> |
identification.jsp :
Code:
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> |
test.jsp :
Code:
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> |
Ensuite les fichiers de conf :
web.xml (complet)
Code:
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> |
conf.xml (la partie intéressante)
Code:
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})"
/> |
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.
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 :
Citation:
voici le query que on utilise
ldap://XX.X.XX.XXX/DC=XXX,DC=XXX?XXX?XXX?(objectClass=XXX)
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 type
Citation:
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.
Voila, j'ai fini mon pavé, si quelqu'un pouvait jeter un coup d'oeil je lui en serais très reconnaissant.
Merci d'avance.
Bdloul