概览
单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。
本文使用开源框架 Jasig CAS 来完成单点登录。下载地址:https://www.apereo.org/cas/download
部署服务器
本文服务器使用Tomcat7,下载了 cas-server-4.0.0-release.zip ,将其解压,找到modules目录下面的cas-server-webapp-4.0.0.war直接复制到webapps文件夹下即可。启动Tomcat,访问 http://localhost:8080/cas-server-webapp-4.0.0,使用casuser/Mellon登录,即可登录成功。
Tomcat默认没有开启HTTPS协议,所以这里直接用了HTTP协议访问。为了能使客户端在HTTP协议下单点登录成功,需要修改一下配置:
-
WEB-INF\spring-configuration\ticketGrantingTicketCookieGenerator.xml将
p:cookieSecure="true"
改为p:cookieSecure="false"
-
WEB-INF\spring-configuration\warnCookieGenerator.xml:将
p:cookieSecure="true"
改为p:cookieSecure="false"
-
WEB-INF\deployerConfigContext.xml:
<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" p:httpClient-ref="httpClient" />
添加p:requireSecure="false"
至此,一个简单的单点登录服务器就基本部署好了。
部署客户端
客户端需要添加对 shiro-cas 和cas-client-core这两个包的依赖。这里主要讲跟CAS相关的配置。
之后配置web.xml
<!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置。-->
< listener >
< listener-class > org.jasig.cas.client.session.SingleSignOutHttpSessionListener </listener-class >
</ listener >
<!-- 该过滤器用于实现单点登出功能,可选配置。 -->
< filter >
< filter-name > CAS Single Sign Out Filter </ filter-name >
< filter-class > org.jasig.cas.client.session.SingleSignOutFilter </ filter-class >
</ filter >
< filter-mapping >
< filter-name > CAS Single Sign Out Filter </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
自定义Realm:
public class MyCasRealm extends CasRealm {
private UserService userService;
public void setUserService (UserService userService) {