Tuto tomcat a lire + question
bonjour, je vois dans le forum que pas mal de personne on un problem de mis en place d'une athentification via un formulaire sous tomcate voila donc la solution pas a pas:
=============
-1- cree une databs que vous nomer "test"
-2- executer le script suivant:
CREATE TABLE users (
name VARCHAR(32),
password VARCHAR(32)
);
CREATE TABLE roles (
name VARCHAR(32),
role VARCHAR(32)
);
insert into users values("test", "test");
insert into users values("test2", "test2");
insert into roles values("test", "admin");
insert into roles values("test2", "manager");
-3- cree un web projet que vous nomez "Test"
ensuite sous "WebRoot" de ton application cree un repertoire que cous nomez
"admin" dont vous cree la page suivant "admin.jsp":
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'admin.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
This is my JSP page non autoriser pour les accees direct
sauf si vous avez authantifier dan ma base. <br>
</body>
</html>
-4- dans le meme repertoire "WebRoot" vous crez les page suivant "login.jsp" et "erreur.jsp":
<head><title>Authentication Page</title></head>
<body>
<center><h2>Please log in to view the customer
database</h2><br/><br/>
<form method="POST" action="j_security_check">
<table><tr><td>Username: <input type="text" size="15"
maxlength="32" name="j_username">
</td></tr><tr><td>
Password: <input type="password" size="15" maxlength="32"
name="j_password">
</td></tr><tr>
<td><input value="Login" type="submit">
<input value="Clear" type="reset"></td>
</tr></table></form></center>
</body>
erreur.jsp:
=======
<head><title>Authentification Error!</title></head>
<body>
<center><h1>Erreur ressayer!</h1><br/><br/>
<a href="javascript:history.back(1)">Try again?</a></center>
</body>
-5- mainteneant vous configurez le fichier "web.xml" situer dans "WEB-INF" comme suite:
web.xml:
=======
<security-constraint>
<display-name>Test d'authentification tomcat</display-name>
<!-- Liste des pages protégées -->
<web-resource-collection>
<web-resource-name>Page sécurisée</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<!-- Rôles des utilisateurs ayant le droit d'y accéder -->
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<!-- Type d'authentification -->
<auth-method>FORM</auth-method>
<realm-name>Espace membres</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/erreur.jsp</form-error-page>
</form-login-config>
</login-config>
<!-- Rôles utilisés dans l'application -->
<security-role>
<description>Administrateur</description>
<role-name>admin</role-name>
</security-role>
-6- la configuration de notre application est terminer ,mais il est indisponsable de mettre
-----> le driver de la connexion du sgbd utiliser dans le repertoire "WEB-INF\lib" ensuite les jars necessairent (commons...)au developpement web et n'oublier pas le fichier "log4j.properties"(a mettre dans "src"):
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=debug, stdout
log4j.logger.org.hibernate=info
#log4j.logger.org.hibernate=debug
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
### log just the SQL
log4j.logger.org.hibernate.SQL=debug
### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=info
### log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
### log cache activity ###
log4j.logger.org.hibernate.cache=info
### log transaction activity
#log4j.logger.org.hibernate.transaction=debug
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
### enable the following line if you want to track down connection ###
### leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
-7- nous allons maintenant configurer tomcate:
---> dans le repertoire lib de tomcate 6 (ou common/lib d'autre version) mettez le driver de la connexion du sgbd utiliser
----> dans le fichier "server.xml" situer dans le repertoire "conf" de tomcat chercher le code suivant :
....
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
....
au dessous mettez le code suivant pour Mysql (a vous de configurer de la meme maniere si vous utilisez un autre sgbd):
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost/test"
connectionName="root" connectionPassword="root"
userTable="users" userNameCol="name" userCredCol="password"
userRoleTable="roles" roleNameCol="role"
/>
-8- deployer ,lancer tomcat et tappez l'URL suivant:
http://127.0.0.1:8086/Authantification/admin/admin.jsp
pour acceder a la page securiser admin.jsp taper:
login:test
mot de passe:test
si vous essayez avec un autre login et mot de passe vous redirigez vers la page d'erreur.jsp
Qestion:
========================
-pour le moment tous va bien mais j'ai des petites question que j'arrive pas a resolus:
1- si vous tapez l'URL suivant :
http://127.0.0.1:8086/Authantification/login.jsp
meme si le mot de passe et login sont valide j'arrive pas a acceder a la page
http://127.0.0.1:8086/Authantification/admin/admin.jsp
y-a-t-il une configuration pour ca?
-2- quand j'ai mis le realm ci dessus dans tomcat j'arrive pas a entrer dans le server de ce dernier par le mot de passe "admin" que j'ai par defaut.