`
liunancun
  • 浏览: 34031 次
社区版块
存档分类
最新评论

单点登录之Jasig CAS初体验

    博客分类:
  • Java
阅读更多
准备工作
官网:www.apereo.org(原www.jasig.org)
点击菜单Projects & Communities -> CAS -> Download进入下载页面
下载CAS Server 4.0.0 Release和Jasig CAS Client for Java version 3.2.1 released:
cas-server-4.0.0-release.zip
cas-client-3.2.1-release.zip

本地还需要有Tomcat运行环境

服务端
解压cas-server-4.0.0-release.zip
在解压出来的目录里面找到modules/cas-server-webapp-4.0.0.war
改名为cas后放到Tomcat的webapps目录下
启动Tomcat
浏览器打开http://10.61.41.152:8080/cas/login可以进入CAS登录页面
其中的用户名密码配置在Spring配置文件
打开cas/WEB-INF/deployerConfigContext.xml
找到primaryAuthenticationHandler的bean配置
可以看到初始用户名为casuser密码为Mellon
为了方便我们新增用户名跟密码为admin
重启Tomcat后就可以用我们新增的用户名admin登录CAS了

客户端
为了方便我们就直接用Tomcat的默认工程examples进行测试
把examples复制2份分别命名为examples1、examples2
解压cas-client-3.2.1-release.zip
将modules里面的jar包放到WEB-INF/lib目录下
注意这里需要去掉Tomcat已有的包否则会有冲突
留下的包有下面这些:
cas-client-core-3.2.1.jar
cas-client-integration-atlassian-3.2.1.jar
cas-client-integration-jboss-3.2.1.jar
cas-client-integration-tomcat-common-3.2.1.jar
cas-client-integration-tomcat-v6-3.2.1.jar
cas-client-integration-tomcat-v7-3.2.1.jar
cas-client-support-distributed-ehcache-3.2.1.jar
cas-client-support-distributed-memcached-3.2.1.jar
commons-codec-1.4.jar
commons-logging-1.1.jar
ehcache-core-2.2.0.jar
slf4j-api-1.5.11.jar
xmlsec-1.3.0.jar
接下来最重要的是要配置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>

<!-- 该过滤器负责用户的认证工作,必须启用它 -->
<filter>
	<filter-name>CASFilter</filter-name>
	<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
	<init-param>
		<param-name>casServerLoginUrl</param-name>
		<param-value>http://10.61.41.152:8080/cas/login</param-value>
		<!--这里的server是服务端的IP -->
	</init-param>
	<init-param>
		<param-name>serverName</param-name>
		<param-value>http://10.61.41.152:8080</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>CASFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
<filter>
	<filter-name>CAS Validation Filter</filter-name>
	<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
	<init-param>
		<param-name>casServerUrlPrefix</param-name>
		<param-value>http://10.61.41.152:8080/cas</param-value>
	</init-param>
	<init-param>
		<param-name>serverName</param-name>
		<param-value>http://10.61.41.152:8080</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>CAS Validation Filter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

<!-- 该过滤器负责实现HttpServletRequest请求的包裹, 比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 -->
<filter>
	<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
	<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

<filter>
	<filter-name>CAS Assertion Thread Local Filter</filter-name>
	<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>CAS Assertion Thread Local Filter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- =============================单点登录配置结束================================= -->

有个要注意的地方,Cas20ProxyReceivingTicketValidationFilter这个过滤器的casServerUrlPrefix千万不能加login,如果加了就会报下面错误。
java.lang.NullPointerException
	java.util.concurrent.ConcurrentHashMap.hash(ConcurrentHashMap.java:333)
	java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:988)
	org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl.retrieve(ProxyGrantingTicketStorageImpl.java:85)
	org.jasig.cas.client.validation.Cas20ServiceTicketValidator.parseResponseFromServer(Cas20ServiceTicketValidator.java:91)
	org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:217)
	org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:169)
	org.jasig.cas.client.authentication.AuthenticationFilter.doFilter(AuthenticationFilter.java:116)
	org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:76)

进行到这里基本的服务端跟客户端都已经配置完成

首次运行
重启Tomcat
浏览器打开http://10.61.41.152:8080/examples1可以看到进入了CAS登录页面
输入用户名密码后重定向回examples首页
浏览器打开http://10.61.41.152:8080/examples2还是进入CAS登陆页面
可以看出现在还不是单点登陆需要修改下服务端的Spring配置

修改配置
打开cas/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml
将ticketGrantingTicketCookieGenerator这个bean中的p:cookieSecure属性改为false让其支持http的单点登陆

再次运行
重启Tomcat
浏览器打开http://10.61.41.152:8080/examples1可以看到进入了CAS登录页面
输入用户名密码后重定向回examples首页
浏览器打开http://10.61.41.152:8080/examples2直接进入了examples首页
单点登陆环境搭建成功
分享到:
评论

相关推荐

    spring boot整合CAS Client实现单点登陆验证的示例

    Spring Boot 整合 CAS Client 实现单点登录验证的示例 Spring Boot 整合 CAS Client 是一种流行的解决方案,用于实现单点登录(Single ...通过配置 CAS Client,我们可以轻松地实现单点登录,提高用户体验和安全性。

    cas实现单点登录,登出(java和php客户端)

    标题中的“CAS实现单点登录,登出(Java和PHP客户端)”指的是使用中央认证服务(Central Authentication Service,简称CAS)来构建一个跨域、跨平台的单点登录(Single Sign-On, SSO)系统。在这样的系统中,用户只...

    用cas实现mantis单点登录和登出

    ### 使用 CAS 实现 Mantis 单点登录与登出 ...接下来只需确保 CAS 服务器与 Mantis 之间的网络通信正常,即可实现无缝的单点登录体验。这种方法不仅大大简化了用户的登录流程,还提升了系统的安全性和管理效率。

    cas客户端集成单点登录代码

    通过遵循这些步骤,你可以成功地将CAS客户端集成到你的应用中,实现单点登录功能,提高系统的安全性,并为用户提供更加便捷的登录体验。记住,每个项目都有其独特的需求,因此在实际操作中,你可能需要对这些通用...

    JASIG CAS 3 Learning Note 1 -- getting started

    JASIG CAS(Central Authentication Service)是一款开源的身份验证系统,广泛应用于多应用系统中的单点登录(Single Sign-On, SSO)。CAS 3 是其第三个主要版本,提供了更加稳定、可扩展和安全的认证服务。本文将...

    cas 单点登录 耶鲁大学单点登录

    ### CAS 单点登录系统详解:基于耶鲁大学CAS实现的实例 #### 一、CAS简介与背景 CAS (Central Authentication Service) 是一种开放源代码的单点登录协议和服务,最初由耶鲁大学开发,目前由Apereo基金会维护。CAS...

    cas .net单点登录

    CAS(Central Authentication Service)是基于Java开发的一种开源的单点登录(Single Sign-On,简称SSO)协议。在.NET环境中,我们可以通过实现CAS客户端来实现单点登录功能。本示例将详细介绍如何在.NET项目中集成...

    利用CAS实现单点登录的完整实例

    总结,通过学习和实践这个"利用CAS实现单点登录的完整实例",你将掌握如何使用Jasig CAS构建一个高效的单点登录系统,从而提升用户体验,简化身份验证管理,并加强系统的安全性。记得深入理解每个步骤,并根据实际...

    Jeecg配置单点登录 登录验证完整代码

    总之,Jeecg配置单点登录是一个涉及CAS服务器设置、客户端集成、登录验证等多个环节的过程。正确配置后,能够提升用户体验,同时也强化了系统的安全性。通过学习和实践,你可以掌握这一重要技能,为自己的Java应用...

    东北大学信息化建设:基于JASIG CAS的统一身份认证系统

    该系统旨在通过实现统一认证与单点登录(Single Sign-On, SSO),提高用户体验,简化管理和维护工作,并保障信息安全。 #### 统一认证与单点登录 统一认证与单点登录是一种让用户只需进行一次登录就能访问所有授权...

    cas-server-4.0.0-release单点登录源码和war包-原版

    CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,简称SSO)系统。它允许用户通过一个认证界面访问多个应用系统,而无需在每个系统上分别进行登录。在这个"cas-server-...

    CAS单点登录服务器配置详情

    通过以上步骤,CAS实现了单点登录的功能,极大地提升了用户体验和系统的安全性。 ### 四、CAS与HTTPS 在配置CAS服务器时,可以选择使用HTTPS协议来增强通信的安全性。如果选择HTTPS协议,则需要在服务器上配置CAS...

    CAS单点登录(SSO)教程

    CAS是一个开源项目,由Jasig组织维护,主要为Web应用提供单点登录功能。CAS的核心机制包括认证服务(CAS Server)和代理服务(CAS Client)两个部分: - **认证服务**:负责用户的认证处理,提供认证逻辑、用户凭证验证...

    cas实现单点登录

    ### CAS实现单点登录(Single Sign-On, SSO)及单点登出(Single Sign-Out, SSO)机制详解 ...通过合理配置CAS及其相关组件,可以实现高效稳定的单点登录和单点登出功能,为用户提供无缝切换于多个应用间的便捷体验。

    cas单点登录需要的jar包

    CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,简称SSO)系统。它允许用户通过一个认证入口访问多个应用系统,而无需在每个系统上分别进行登录。在这个场景中,"cas...

    Cas Server 3.4.2 和 Cas Client 3.1.6 的源代码

    通过研究 Cas Server 3.4.2 和 Cas Client 3.1.6 的源代码,我们可以深入了解其工作原理,学习如何定制和扩展认证流程,以及如何在实际项目中实现安全的单点登录解决方案。同时,源代码分析还能帮助我们发现潜在的...

Global site tag (gtag.js) - Google Analytics