Archive Page 2

Fonte: java.sun.com

Implementare ex novo un sistema di autenticazione per il nostro portale web è un processo lungo e faticoso. Per fortuna molti servlet container ci mettono a disposizione dei sistemi di autenticazione belli e pronti.

Se il vostro servlet container è Apache Tomcat questa guida può fare al caso vostro.

Procederò dando per scontato che abbiate installato Tomcat 5.x o superiore sulla vostra macchina; inoltre tutte le modifiche proposte saranno piattaforma indipendenti ( Linux, Mac, Windows … ).

Tomcat ci offre ben cinque tipi diversi di autenticazione:

  • HTTP basic authentication
  • Form-based login authentication
  • Client certificate authentication
  • Mutual authentication
  • Digest authentication

In questo breve tutorial mi concentrerò sulla “Form-Based Authentication”.

Essa permette di gestire il login da una form da noi creata ma non prevede alcun tipo di crittografia su dati, che viaggeranno in chiaro sulla rete.

Il comportamento di questo meccanismo può essere facilmente compreso dando uno sguardo alla seguente immagine

Form-Based Authentication

Per utilizzare la Form-based login authentication dobbiamo innanzi tutto creare un file contenente la form per l’autenticazione che chiameremo per coerenza con l’immagine precedente “login.jsp”.

Questo file per assolvere al suo compito deve contenere necessariamente al suo interno una form così strutturata:

<form id="login" method="post" action="j_security_check">
	Nome Utente: <input type="text" name="j_username"/>
 	Password:  <input type="password" name="j_password"/>
 	<input type="submit" value="ENTRA"/>
</form>

Dopo di che si dovrà modificare il file “web.xml” in tre passi :

  1. Diciamo a Tomcat che vogliamo utlizzare la Form-based login authentication, dove si trova il file contenente la form e come si chiama:
    <login-config>
    
            <auth-method>FORM</auth-method>
    
            <realm-name>Richiesta Autenticazione</realm-name>
    
            <form-login-config>
    
                <form-login-page>/login.jsp</form-login-page>
    
                <form-error-page>/login.jsp</form-error-page>
    
            </form-login-config>
    
    </login-config>

    In questo esempio abbiamo indicato la pagina “login.jsp” anche come error page, sarebbe una buona cosa distinguere i due casi di modo che l’utente si accorga di avere inserito delle credenziali errate nella form.

  2. Creiamo i security roles:
    <security-role>
    
           <description>Amministratore del sistema</description>
           <role-name>admin</role-name>
    
    </security-role>
    
    <security-role>
    
            <description>Utente generico</description>
            <role-name>user</role-name>
    </security-role>

    In questo caso abbiamo creato due ruoli che poi verranno assegnati a uno o più utenti, come descriverò in seguito.

  3. Delimitiamo le aree che vogliamo riservare inserendo le seguenti righe:
    <security-constraint>
    
    	<web-resource-collection>
    
    		<web-resource-name>Area Riservata 1</web-resource-name>
    
    		<url-pattern>/</url-pattern>
    
    	</web-resource-collection>
    
    	<auth-constraint>
    
    		<role-name>user</role-name>
    
    	</auth-constraint>
    
    </security-constraint>
    
    <security-constraint>
    
    	<web-resource-collection>
    
    		<web-resource-name>Area Riservata 2</web-resource-name>
    
    			<url-pattern>/admin</url-pattern>
    
    	</web-resource-collection>
    
    	<auth-constraint>
    
    		<role-name>admin</role-name>
    
    	</auth-constraint>
    
    </security-constraint>

    Abbiamo creato due aree riservate con path “/admin” e “/” a cui possono accedere rispettivamente solo gli utenti con ruolo admin e con ruolo user.

Fatto ciò non ci resta che creare gli utenti e assegnare loro dei ruoli.

Esistono diversi modi per fare ciò.

In questa guida illustrerò il più semplice, che consiste nell’editare il file “$CATALINA_HOME/conf/tomcat-users.xml”, dove per “$CATALINA_HOME” si intende il path della vostra installazione di Tomcat.

Un esempio di file “tomcat-users.xml” può essere il seguente:


<?xml version='1.0' encoding='utf-8'?>

<tomcat-users>

	<role rolename="admin"/>
	<role rolename="user"/>

	<user username="amministratore" password="tomcat" roles="admin,user"/>
	<user username="tizio" password="tomcat" roles="user"/>
	<user username="caio" password="tomcat" roles="user"/>

</tomcat-users>

In questo breve tutorial spiego come interfacciare Tomcat a un database in modo che esso, invece di leggere dal file “tomcat-users.xml”, esegua delle query al DB per autenticare gli utenti.

Dopo tutte queste modifiche, neanche a dirlo, è necessario RIAVVIARE Tomcat.