TUTORIAL LIFERAY 2 – INTEGRARE IL CAS SERVER CON LIFERAY

Nell’articolo di oggi vedremo come integrare il CAS server con una base dati MySql e per comodità sfrutteremo la stessa di Liferay.

Se avete seguito i passi del precedente articolo dovreste avere la vostra istanza liferay attiva e funzionante con il meccanismo di autenticazione demandato al CAS, che si preoccupa di verificare se username e password sono uguali.

Nell’articolo precedente abbiamo usato la versione CAS messa a disposizione da Liferay, che è ferma alla versione 3.0.5 e pertanto installiamo la versione nuova 3.5.0 disponibile qui, che risulta essere più stabile e anche più esaustiva dal punto di vista dei log.

Scaricato il file sostituiamo, rinominiamo il file war in cas-web.war, in modo da non dover cambiare le impostazioni effettuate precedente su liferay.

Una volta attivo accediamo alla cartella webapp/cas-web/WEB-INF sotto la directory del tomcat e analizziamo il file deployerConfigContext.xml: in questo file sono definite le regole di autenticazione e nella configurazione di default troviamo il bean

che come già detto applica come meccanismo di autenticazione che username e password coincidano.

Sostituiamo il bean con quello responsabile di implementare il meccanismo di autenticazione. Il cas mette a disposizione 3 implementazioni differenti:

  1. BindModeSearchDatabaseAuthenticationHandler (responsabile di verificare l’accesso ad uno schema db con una coppia username/password)
  2. QueryDatabaseAuthenticationHandler (responsabile di verificare l’autenticazione tramite una query sql)
  3. SearchModeSearchDatabaseAuthenticationHandler ( responsabile di verificare  l’autenticazione  partendo dalla tripletta tabella utente, username e password, opportunamente mappati)

Per integrare il bean occorre definire il datasource, tramite la seguente configurazione

e successivamente potete scegliere liberamente tra il secondo e il terzo bean, da sostituire al bean SimpleTestUsernamePasswordAuthenticationHandler.

Nel caso del bean QueryDatabaseAuthenticationHandler  dovremo definire la query per ottenere la password da confrontare con quella inserita dall’utente.

Nel caso del bean SearchModeSearchDatabaseAuthenticationHandler dovremo specificare la tabella coinvolta e i campi su cui mappare username e password inseriti nel login del CAS.

Entrambi i bean considerano il caso di password salvate in chiaro. Siccome Liferay di default applica la codifica SHA dovete allineare il comportamento e avete di fronte due possibilità:

  1. configurare liferay in modo che salvi in chiaro le password, tramite la direttiva passwords.encryption.algorithm=NONE
  2. configurare i bean del CAS in modo da applicare l’algoritmo SHA. Per farlo occorre sfruttare il bean org.jasig.cas.authentication.handler.DefaultPasswordEncoder, scegliere la codifica desiderata e innestarli nel nostro bean.
Terminata la configurazione, occorre integrare le librerie necessarie alla comunicazione con il database e il gioco è fatto:
  • commons-pool
  • commons-dbcp
  • spring-jdbc-3.1.1