{"id":222,"date":"2014-06-19T23:44:27","date_gmt":"2014-06-19T21:44:27","guid":{"rendered":"http:\/\/www.valeriofinazzo.it\/wordpress\/?p=222"},"modified":"2014-06-20T00:16:46","modified_gmt":"2014-06-19T22:16:46","slug":"tutorial-liferay-2-integrare-il-cas-server-con-liferay","status":"publish","type":"post","link":"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/tutorial-liferay-2-integrare-il-cas-server-con-liferay\/","title":{"rendered":"TUTORIAL LIFERAY 2 &#8211; INTEGRARE IL CAS SERVER CON LIFERAY"},"content":{"rendered":"<p style=\"color: #0d293f; text-align: justify;\">Nell&#8217;articolo di oggi vedremo come integrare il CAS server con una base dati MySql e per comodit\u00e0 sfrutteremo la stessa di Liferay.<\/p>\n<p style=\"color: #0d293f; text-align: justify;\">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.<\/p>\n<p style=\"color: #0d293f; text-align: justify;\">Nell&#8217;articolo precedente abbiamo usato la versione CAS messa a disposizione da Liferay, che \u00e8 ferma alla versione 3.0.5 e pertanto installiamo la versione nuova 3.5.0 disponibile\u00a0<a style=\"color: #2675b5;\" href=\"http:\/\/www.jasig.org\/cas_server_3_5_0_release\" target=\"_blank\">qui<\/a>, che risulta essere pi\u00f9 stabile e anche pi\u00f9 esaustiva dal punto di vista dei log.<\/p>\n<p style=\"color: #0d293f; text-align: justify;\">Scaricato il file sostituiamo, rinominiamo il file war in cas-web.war, in modo da non dover cambiare le impostazioni effettuate precedente su liferay.<\/p>\n<p style=\"color: #0d293f; text-align: justify;\">Una volta attivo accediamo alla cartella webapp\/cas-web\/WEB-INF sotto la directory del tomcat e analizziamo il file\u00a0deployerConfigContext.xml: in questo file sono definite le regole di autenticazione e nella configurazione di default troviamo il bean<\/p>\n<pre class=\"lang:default decode:true\">&lt;bean class=\"org.jasig.cas.authentication.handler.\r\nsupport.SimpleTestUsernamePasswordAuthenticationHandler\"&gt;\r\n&lt;\/bean&gt;<\/pre>\n<p style=\"text-align: justify;\">che come gi\u00e0 detto applica come meccanismo di autenticazione che username e password coincidano.<\/p>\n<p style=\"color: #0d293f; text-align: justify;\">Sostituiamo il bean con quello responsabile di implementare il meccanismo di autenticazione. Il cas mette a disposizione 3 implementazioni differenti:<\/p>\n<ol style=\"color: #143c5d; text-align: justify;\">\n<li>BindModeSearchDatabaseAuthenticationHandler (responsabile di verificare l&#8217;accesso ad uno schema db con una coppia username\/password)<\/li>\n<li>QueryDatabaseAuthenticationHandler (responsabile di verificare l&#8217;autenticazione tramite una query sql)<\/li>\n<li>SearchModeSearchDatabaseAuthenticationHandler ( responsabile di verificare\u00a0 l&#8217;autenticazione\u00a0\u00a0partendo dalla tripletta tabella utente, username e password, opportunamente mappati)<\/li>\n<\/ol>\n<p style=\"color: #0d293f; text-align: justify;\">Per integrare il bean occorre definire il datasource, tramite la seguente configurazione<\/p>\n<pre style=\"color: #0d293f;\">&lt;bean id=\"dataSource\" class=\"org.apache.commons.dbcp.BasicDataSource\"&gt;\r\n\u00a0 \u00a0 \u00a0 &lt;property name=\"driverClassName\"&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;value&gt;com.mysql.jdbc.Driver&lt;\/value&gt;\r\n\u00a0 \u00a0 \u00a0 &lt;\/property&gt;\r\n\u00a0 \u00a0 \u00a0 &lt;property name=\"url\"&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 &lt;value&gt;jdbc:mysql:\/\/localhost:3306\/lportal&lt;\/value&gt;\r\n\u00a0 \u00a0 \u00a0 &lt;\/property&gt;\r\n\u00a0 \u00a0 \u00a0 &lt;property name=\"username\"&gt;&lt;value&gt;lportal&lt;\/value&gt;&lt;\/property&gt;\r\n\u00a0 \u00a0 \u00a0 &lt;property name=\"password\"&gt;&lt;value&gt;lportal&lt;\/value&gt;&lt;\/property&gt;\r\n &lt;\/bean&gt;<\/pre>\n<p style=\"color: #0d293f; text-align: justify;\">e successivamente potete scegliere liberamente tra il secondo e il terzo bean, da sostituire al bean\u00a0SimpleTestUsernamePasswordAuthenticationHandler.<\/p>\n<pre style=\"color: #0d293f;\">&lt;bean class=\"org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler\"&gt;\r\n\u00a0 \u00a0 &lt;property name=\"dataSource\" ref=\"dataSource\" \/&gt;\r\n\u00a0 \u00a0 &lt;property name=\"sql\" value=\"select password_ from user_ where lower(emailAddress) = lower(?)\" \/&gt;\r\n&lt;\/bean&gt;\r\n<\/pre>\n<p>Nel caso del bean\u00a0QueryDatabaseAuthenticationHandler \u00a0dovremo definire la query per ottenere la password da confrontare con quella inserita dall&#8217;utente.<\/p>\n<pre style=\"color: #0d293f;\">&lt;bean class=\"org.jasig.cas.adaptors.jdbc.SearchModeSearchDatabaseAuthenticationHandler\"&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;property name=\"tableUsers\"&gt;&lt;value&gt;user_&lt;\/value&gt;&lt;\/property&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;property name=\"fieldUser\"&gt;&lt;value&gt;emailAddress&lt;\/value&gt;&lt;\/property&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;property name=\"fieldPassword\"&gt;&lt;value&gt;password_&lt;\/value&gt;&lt;\/property&gt;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;property name=\"dataSource\" ref=\"dataSource\"\/&gt;\r\n\u00a0&lt;\/bean&gt;<\/pre>\n<p style=\"color: #0d293f; text-align: justify;\">Nel caso del bean\u00a0SearchModeSearchDatabaseAuthenticationHandler dovremo specificare la tabella coinvolta e i campi su cui mappare username e password inseriti nel login del CAS.<\/p>\n<p style=\"color: #0d293f; text-align: justify;\">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\u00e0:<\/p>\n<ol style=\"color: #143c5d; text-align: justify;\">\n<li>configurare liferay in modo che salvi in chiaro le password, tramite la direttiva\u00a0passwords.encryption.algorithm=NONE<\/li>\n<li>configurare i bean del CAS in modo da applicare l&#8217;algoritmo SHA. Per farlo occorre sfruttare il bean\u00a0org.jasig.cas.authentication.handler.DefaultPasswordEncoder, scegliere la codifica desiderata e innestarli nel nostro bean.<\/li>\n<\/ol>\n<div style=\"color: #0d293f; text-align: justify;\">Terminata la configurazione, occorre integrare le librerie necessarie alla comunicazione con il database e il gioco \u00e8 fatto:<\/div>\n<div style=\"color: #0d293f;\">\n<ul style=\"color: #143c5d;\">\n<li style=\"text-align: justify;\">commons-pool<\/li>\n<li style=\"text-align: justify;\">commons-dbcp<\/li>\n<li style=\"text-align: justify;\">spring-jdbc-3.1.1<\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Nell&#8217;articolo di oggi vedremo come integrare il CAS server con una base dati MySql e per comodit\u00e0 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 &hellip; <a href=\"http:\/\/www.valeriofinazzo.it\/wordpress\/2014\/06\/tutorial-liferay-2-integrare-il-cas-server-con-liferay\/\" class=\"more-link\">Continua la lettura di <span class=\"screen-reader-text\">TUTORIAL LIFERAY 2 &#8211; INTEGRARE IL CAS SERVER CON LIFERAY<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[42],"tags":[43],"_links":{"self":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/222"}],"collection":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/comments?post=222"}],"version-history":[{"count":5,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/222\/revisions"}],"predecessor-version":[{"id":227,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/posts\/222\/revisions\/227"}],"wp:attachment":[{"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/media?parent=222"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/categories?post=222"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.valeriofinazzo.it\/wordpress\/wp-json\/wp\/v2\/tags?post=222"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}