准备工作
官网: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首页
单点登陆环境搭建成功
分享到:
相关推荐
jasig cas 单点登录环境搭建详细资料
jasig开源单点登录框架的时序图
cas-client-core-3.2.1.jar LoginImpl.java LoginServlet.java SSOClientFilter.java web.xml 电子政务平台单点登录集成手册v4.0-2017年2月9日.docx
cas客户端集成单点登录代码cas客户端集成单点登录代码cas客户端集成单点登录代码cas客户端集成单点登录代码cas客户端集成单点登录代码cas客户端集成单点登录代码
耶鲁大学单点登录,描述怎么开发一个简单的cas实例
jasig cas4.1.4+oracle数据库认证,可以直接部署到 tomcat中去。自己建表user_info。
基于JASIG+CAS统一认证平台的设计和实现
予org.jasig.cas.client.util.CommonUtils 加入 public static void disableSSLVerification(){ try { // Create a trust manager that does not validate certificate chains TrustManager[] ...
spring下使用shiro+cas配置单点登录,多个系统之间的访问,每次只需要登录一次 ## 系统模块说明 1. cas: 单点登录模块,这里直接拿的是cas的项目改了点样式而已 2. doc: 文档目录,里面有数据库生成语句,采用的...
东北大学信息化建设——基于JASIG CAS的统一身份认证系统 概述 •统一认证与单点登录 •CAS •东北大学统一认证服务
#DockerFile用于具有cas-management的JASIG CAS Jasig Cas 4.1映像 ##先决条件 码头工人 JVM和Maven(战争大楼) 码头工人组成 ssl证书 ## image build mvn clean package; docker-compose rm -f; docker-compose ...
原版cas单点登录源码和wa包,原版sso,官网下载太慢,所以特地放到csdn
cas单点登录系统,带源码,可定制开发;CASServer负责完成对用户的认证工作,CASServer需要独立部署,CASServer处理用户名/密码等凭证(Credentials)验证,它可能会到数据库检索一条用户帐号信息,也可能在XML文件中...
利用jasig开源jar包实现单点登录,两个系统可以模拟单点登录,一个系统登录之后,访问另外一个系统,不需要再次登录
-- 该过滤器使得开发者可以通过 org.jasig.cas.client.util.AssertionHolder 来获取用户 的登录名。 比如 AssertionHolder.getAssertion().getPrincipal().getName()。 --> <filter-name>CAS Assertion ...
NULL 博文链接:https://iintothewind.iteye.com/blog/2013272
jasig-cas-4.0.x-覆盖模板
用Cas是实现单点登录,分别为服务器端的3.4.2的源代码,和客户端3.1.6的源代码
单点登录概念证明 原料: 贾西格·卡斯 弹簧框架 PostgreSQL Maven 数据库设置: 使用密码 caliga 创建用户 caliga CREATE USER caliga WITH PASSWORD 'caliga'; 创建数据库 caliga CREATE DATABASE caliga ...
jasig cas 单点登录 SSO 官网下载很慢,这里上传一下