Il sito dedicato all'informatica ideato da Iasparra Francesco

Tomcat: Single Sign On

  • Abilitare l'autenticazione centralizzata in Tomcat

  • Data: 28/08/2013 Autore: Iasparra Francesco 

Per abilitare l'autenticazione centralizzata in Tomcat e' sufficiente modificare il file server.xml in questo modo:

<Host name="localhost"  appBase="webapps"            unpackWARs="true" autoDeploy="true"            xmlValidation="false" xmlNamespaceAware="false">...
	<Valve className="org.apache.catalina.authenticator.SingleSignOn" /> ...
</Host>

La dichiareazione <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> permette l'autenticazione Single Sign On.

Come sappiamo l'autenticazione di tipo HTTP non gestisce il logout, quindi una volta loggati non piu' possibile effettuare il logout. Gli statagemmi di inversione del login per effettuare il logout (ovvero effettuare un login sbagliato alla richiesta HTTP 401) non funzionano sul Single Sign On attivo.

Tuttavia e' stato notato un comportamento diverso nel caso in cui si utilizzi come sistema di login una pagina jsp. Utilizzando la modalita' di login mediante il form la dichiarazione session.invalidate() sembra funzionare per invalidare l'utente. La configurazione prevista per il web.xml dell'applicazione e' quindi:

<login-config>   <auth-method>FORM</auth-method>   <realm-name>Form-Based Authentication Area</realm-name>   <form-login-config>     <form-login-page>/login.jsp</form-login-page>     <form-error-page>/error.jsp</form-error-page>   </form-login-config></login-config>

Tale modalita' va pero' utilizzata per tutte le applicazioni che devono essere autenticate mediante il sistema di single sign on. Infatti il diverso comportamento nel caso di login classico inibisce l'uso della sessione per la gestione dell'autenticazione, ed e' quindi impossibile effettuare il logout mediante la sessione.

Nel file web.xml di tutte le applicazioni, quindi va utilizzato il tag <form-login-page>per definire la pagina di login nel tag <form-login-config>, anziche' utilizzare la modalita' standard di autenticazione.

La classica pagina di login.jsp e' del tipo:

<form method="POST" action="j_security_check" >  <table cellpadding="2" border="0" cellspacing="0">    <tr>      <td align="right">Username:</td>      <td align="left"><input type="text" name="j_username" size="9"></td>    </tr>    <tr>      <td align="right">Password:</td>      <td align="left"><input type="password" name="j_password" size="9"></td>    </tr>    <tr>      <td align="right"><input type="submit" value="Log In"></td>      <td align="left"><input type="reset"></td>    </tr>  </table></form>

L'indirizzo chiamato dalla action del form: j_security_check viene interpretato da Tomcat per l'accesso al sistema di autenticazione. Cio' funziona solo se l'utente risulta ancora non autenticato.


  • Java

  • Php

  • Mysql

  • Apache ant

  • Eclipse

  • Spring

  • Hibernate

  • Netbeans

  • Debian

  • Linux

  • Maven