Je suis en train de faire un site internet, et j'ai besoin de limiter l'accès des visiteurs du site au contenu de mon application.
Je travaille avec Apache Tomcat 6.0.18, postgresql et j'ai bien sûr le postgresql-8.3-603.jdbc4 dans mon lib.
Mon contexte Apache-Tomcat s'appelle "hotel", ma base de données postgres s'appelle AMDB.
J'ai pas de fichier sun-web.xml (j'ai lu sur des sites internet qu'il fallait parfois le mettre : mais où? et pourquoi ?)
Mes fichiers sont comme suit :
Web.xml:
Code :
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns: xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ [...] .xsd"
- version="2.5">
- <security-constraint>
- <display-name>Sécurité sous Tomcat</display-name>
- <web-resource-collection>
- <web-resource-name>hotel</web-resource-name>
- <url-pattern>/*</url-pattern>
- <http-method>GET</http-method>
- <http-method>POST</http-method>
- <http-method>HEAD</http-method>
- <http-method>PUT</http-method>
- <http-method>OPTIONS</http-method>
- <http-method>TRACE</http-method>
- <http-method>DELETE</http-method>
-
-
- </web-resource-collection>
-
- <auth-constraint>
- <role-name>admin</role-name>
- </auth-constraint>
-
- </security-constraint>
-
-
- <login-config>
- <auth-method>BASIC</auth-method>
- <realm-name>Authentification pour Tomcat</realm-name>
- </login-config>
-
-
- <security-role>
- <description/>
- <role-name>admin</role-name>
- <role-name>user</role-name>
- </security-role>
-
-
- </web-app>
|
J'ai ajouté le code suivant dans mon fichier server.xml à l'intérieur de la balise <Host>:
Code :
- <Context path="/hotel" docBase="hotel"
- crossContext="true" reloadable="true" debug="1">
- <Resource name="jdbc/AMDB" auth="root"
- type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
- url="jdbc:postgresql://127.0.0.1:5432/AMDB"
- username="root" password="artirt" maxActive="20" maxIdle="10"
- maxWait="-1"/>
- </Context>
- <Realm className="org.apache.catalina.realm.JDBCRealm"
- connectionName="root"
- connectionPassword="artirt"
- localDataSource="true"
- dataSourceName="jdbc/AMDB"
- driverName="org.postgresql.Driver"
- connectionURL="jdbc:postgresql://127.0.0.1:5432/AMDB"
- userTable="users"
- userRoleTable="roles"
- userNameCol="username"
- userCredCol="password"
- roleNameCol="role-name"
- />
|
Ma base de données est créée sous postgresql avec les codes suivants (copiés de pgAdmin):
Code :
- -- Table: roles
- -- DROP TABLE roles;
- CREATE TABLE roles
- (
- username character varying(32) NOT NULL,
- "role-name" character varying(32) NOT NULL,
- CONSTRAINT cleprimroles PRIMARY KEY (username, "role-name" ),
- CONSTRAINT foreignckeyroles FOREIGN KEY (username)
- REFERENCES users (username) MATCH SIMPLE
- ON UPDATE NO ACTION ON DELETE NO ACTION
- )
- WITH (OIDS=FALSE);
- ALTER TABLE roles OWNER TO root;
- -- Table: users
- -- DROP TABLE users;
- CREATE TABLE users
- (
- username character varying(32) NOT NULL,
- "password" character varying(32) NOT NULL,
- CONSTRAINT cleprimusers PRIMARY KEY (username)
- )
- WITH (OIDS=FALSE);
- ALTER TABLE users OWNER TO root;
|
Tout cela étant fait, lorsque je démarre Tomcat et je lance ne page dans mon application, la fenetre d'authentification de firefox (avec login et password) apparait. J'y rentre les coordonnees, et si elles sont correctes j'ai la page d'erreur suivante :
L'erreur est :
Code :
- Etat HTTP 403 - L'acc�s � la ressource demand�e a �t� interdit
|
Merci d'avance de votre aide.