[Liferay] Liferay 实现单点登录 - CAS
来源:程序员人生 发布时间:2014-11-11 08:20:16 阅读次数:3374次
接上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 的集成才算完成。
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠