mercredi 20 janvier 2010

java: web Tomcat authentifications simple

voici, la configuration à mettre en place pour obtenir une authentification par role sous Tomcat :

Voici la section du web.xml au sein de laquelle on ajoute un role et une security constraint :

<code>
<security-constraint>
<display-name>ressourcesProtegees</display-name>
<web-resource-collection>
<web-resource-name>jsp</web-resource-name>
<description>pages jsp</description>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>verifie que l'utilisateur a ete authentifie</description>
<role-name>authentifie</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>authentifie</realm-name>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/erreurLogin.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role>
<description>utilisateur a ete authentifie</description>
<role-name>authentifie</role-name>
</security-role></code>

Puis, il faut ajouter une jsp avec des attributs de form ayant un nom particulier (une action nommé j_security_check et 2 champ nommé j_username et j_password) , comme suit :

<code>

<form action="j_security_check" method="post">
<fieldset id="connexion">
<legend>Connexion</legend>
<p>
<label for="reqStrLogin">Login :</label>
<input id="reqStrLogin" type="text" name="j_username" value="login"/>
<label for="reqStrPAssword">Mot de passe :</label>
<input id="reqStrPassword" type="password" name="j_password" value="password"/>
</p>
</fieldset>
<p class="submit">
<input id="submit" name="submit" type="submit" value="Connexion"/>
</p>
<p>
<a id="nouvelAbonne" href="nouvelUtilisateur.jsp">Vous n'etes pas inscrit, Inscrivez-vous des maintenant</a>
</p>
</form>
</code>
</html>

Il faut aussi configurer les server (Context.xml) avec une datasource et un Realm (Server.xml") sur tomcat 6:

il faut declarer une datasource dans le Context.xml
<code>
<!-- ressources jdbc -->
<Resource name="jdbc/bddApp" auth="Container" type="javax.sql.DataSource"
driverClassName="org.postgresql.Driver" url="jdbc:postgresql://127.0.0.1:5432/bddApp"
username="toto" password="toto" maxActive="20" maxIdle="10"
maxWait="-1" />
</code>

il faut aussi déclarer le Realm asscocié avec bon nom JNDI (ici par BDD)

<code><Realm className="org.apache.catalina.realm.DataSourceRealm" dataSourceName="jdbc/bddApp" debug="99" localDataSource="true" roleNameCol="role" userCredCol="password" userNameCol="nom" userRoleTable="utilisateurs_roles" userTable="utilisateurs"/></code>

Attention : il faut évidemment ajouter une table de role et de user dans la base avec les noms de colonnes spécifiés (ici password ,nom et role)

Aucun commentaire:

Enregistrer un commentaire