接上一篇:Liferay 实现单点登录 - OpenLDAP
本文不介绍概念,只注重实现
Liferay : 6.1.1 CE GA2
OpenLdap for Windows :openldap-2.4.38-x86
Apache Directory Studio : Apache Directory Studio 2.0.0-M3
CAS : cas-server-3.5.2
Windows : 7 x64
第二篇 CAS配置
下载安装
本文使用的版本为 cas-server-3.5.2-release
解压之后在 cas-server-3.5.2-release\cas-server-3.5.2\modules 目录下复制 cas-server-webapp-3.5.2.war,粘贴到 ${liferay.home}\webapps,并改名为任何你想要的名字,比如 cas-server,之后重启 Liferay server。
注意一点,网上基本所有的配置教程都提到关于 SSL 配置,在配置 SSL 之后才使用 CAS Server,其实这两者之间并没有必要关系,本文就是在没有配置 SSL 情况下使用 CAS Server。
重启 Liferay 之后,输入 url 地址 http://localhost:8080/cas-server/login,用户名与密码输入任意相同的字符串,点击登录之后如果显示登录成功,就表明 CAS Server 初步配置成功。
但注意!只是初步,很多教程很不负责任的到这一步就结束了,留下个半成品给不知所以的读者。
CAS Sever 与 Liferay 集成
修改authenticationHandlers
这一步是用来修改 CAS 验证条件,为配置的话就跟上文提到的,只要是用户名密码为相等字符串就显示登录成功
找到目录cas-server-3.5.2-release\cas-server-3.5.2\cas-server-webapp\src\main\webapp\WEB-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:searchBase="dc=example,dc=com" - 对应于 DIT 的 root entry,关于 DIT 可以查看上一篇
增加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-3.5.2-release\cas-server-3.5.2\cas-server-webapp 目录找到并打开 pom.xml,在第一个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-3.5.2-release\cas-server-3.5.2\modules 找到cas-server-support-ldap-3.5.2.jar,并复制粘贴到${liferay.home}\webapps\cas-server\WEB-INF\lib,一样的效果,我是没明白为什么非要自己编译一遍。
完成上一步之后如果直接使用 CAS Server 会包括,因为还少一个包,spring-ldap-core-1.3.2.RELEASE.jar,自己到网上下载一个,同意粘贴到${liferay.home}\webapps\cas-server\WEB-INF\lib 就好。
Liferay 配置 CAS Server
至此为止, CAS Server 与 Liferay 的集成才算完成。