牛骨文教育服务平台(让学习变的简单)
博文笔记

Shiro & CAS 实现单点登录

创建时间:2016-05-26 投稿人: 浏览次数:196

概览

单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。

本文使用开源框架 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-INFspring-configuration icketGrantingTicketCookieGenerator.xmlp:cookieSecure="true" 改为 p:cookieSecure="false"

  • WEB-INFspring-configurationwarnCookieGenerator.xml:将p:cookieSecure="true" 改为 p:cookieSecure="false"

  • WEB-INFdeployerConfigContext.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 >

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。