[Liferay] Liferay 實現單點登錄 - CAS
來源:程序員人生 發布時間:2014-11-11 08:20:16 閱讀次數:3616次
接上1篇:Liferay 實現單點登錄 - OpenLDAP
本文不介紹概念,只重視實現
Liferay : 6.1.1 CE GA2
OpenLdap for Windows :openldap⑵.4.38-x86
Apache Directory Studio : Apache Directory Studio 2.0.0-M3
CAS : cas-server⑶.5.2
Windows : 7 x64
第2篇 CAS配置
下載安裝
下載地址 :https://www.apereo.org/cas/download
本文使用的版本為 cas-server⑶.5.2-release
解壓以后在 cas-server⑶.5.2-releasecas-server⑶.5.2modules 目錄下復制 cas-server-webapp⑶.5.2.war,粘貼到 ${liferay.home}webapps,并改名為任何你想要的名字,比如 cas-server,以后重啟 Liferay server。
注意1點,網上基本所有的配置教程都提到關于 SSL 配置,在配置 SSL 以后才使用 CAS Server,其實這二者之間并沒有必要關系,本文就是在沒有配置 SSL 情況下使用 CAS Server。
重啟 Liferay 以后,輸入 url 地址 http://localhost:8080/cas-server/login,用戶名與密碼輸入任意相同的字符串,點擊登錄以后如果顯示登錄成功,就表明 CAS Server 初步配置成功。
但注意!只是初步,很多教程很不負責任的到這1步就結束了,留下個半成品給不知所以的讀者。
CAS Sever 與 Liferay 集成
修改authenticationHandlers
這1步是用來修改 CAS 驗證條件,為配置的話就跟上文提到的,只要是用戶名密碼為相等字符串就顯示登錄成功
找到目錄cas-server⑶.5.2-releasecas-server⑶.5.2cas-server-webappsrcmainwebappWEB-INF,
打開deployerConfigContext.xml 文件,找到以下內容并注釋或刪除
<property name="authenticationHandlers">
…
</property>
原處添加
<property name="authenticationHandlers">
<list>
<bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler"
p:filter="uid=%u"
p:searchBase="dc=example,dc=com"
p:contextSource-ref="contextSource" />
</list>
</property>
p:filter="uid=%u" - 注意這里是使用 uid 進行過濾,固然也能夠是 sn,這個取決與在創建 user 時的 RDN,以下圖

p:searchBase="dc=example,dc=com" - 對應于 DIT 的 root entry,關于 DIT 可以查看上1篇
增加contextSource
在文件結尾處的 </beans> 之前添加
<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
<property name="pooled" value="true"/>
<property name="urls">
<list>
<value>ldap://localhost:389</value>
</list>
</property>
<!-- <property name="userDn" value="cn=jimbob, dc=example, dc=com"/> -->
<property name="userDn" value="cn=jimbob,dc=example,dc=com"/>
<property name="password" value="dirtysecret"/>
<property name="baseEnvironmentProperties">
<map>
<!-- Three seconds is an eternity to users. -->
<entry key="com.sun.jndi.ldap.connect.timeout" value="3000" />
<entry key="com.sun.jndi.ldap.read.timeout" value="3000" />
<entry key="java.naming.security.authentication" value="simple" />
</map>
</property>
</bean>
修改Maven 的 pom.xml 并編譯
在 cas-server⑶.5.2-releasecas-server⑶.5.2cas-server-webapp 目錄找到并打開 pom.xml,在第1個dependency 之前添加以下,并編譯
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>cas-server-support-ldap</artifactId>
<version>${project.version}</version>
</dependency>
使用 mvn install 指令編譯,在以下目錄找到編譯后的 war 文件,復制粘貼到${liferay.home}webapps , 重啟 Liferay server
如果沒有 Maven 環境,或編譯失敗,也能夠直接在cas-server⑶.5.2-releasecas-server⑶.5.2modules 找到cas-server-support-ldap⑶.5.2.jar,并復制粘貼到${liferay.home}webappscas-serverWEB-INFlib,1樣的效果,我是沒明白為何非要自己編譯1遍。
完成上1步以后如果直接使用 CAS Server 會包括,由于還少1個包,spring-ldap-core⑴.3.2.RELEASE.jar,自己到網上下載1個,同意粘貼到${liferay.home}webappscas-serverWEB-INFlib 就好。
Liferay 配置 CAS Server

至此為止, CAS Server 與 Liferay 的集成才算完成。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈