单点登录CAS使用记(二):部署CAS服务器以及客户端
CAS-Server下载地址:https://www.apereo.org/projects/cas/download-cas
CAS-Client下载地址:http://developer.jasig.org/cas-clients/
CAS官方教程: https://wiki.jasig.org/display/CASUM/CAS+on+Windows+Quick+Setup+Guide
版本:
- CAS Server版本:cas-server-3.4.11
- CAS Client版本:cas-client-3.2.1
一:下载并且导入
1.下载CAS
cas-server-3.4.11-release.zip
cas-client-3.2.1-release.zip
2.解压cas-server-3.4.11-release.zip
可以看到压缩包中有许多项目,我们只需要选用两个项目
cas-server-core:主要业务功能实现,最终打包成jar被cas-server-webapp所使用
cas-server-webapp:为CAS-server主项目,集中了各种配置文件
其他都是一些扩展项目,特定情况下可以选用。

modules下存放了打的好各种jar、wa包,如果你想要直接使用,无需修改源码,可以直接把这两个项目
部署到Tomcat下面,直接启动。我这边需要查看源码,所以把源码直接导入Eclipse中,在Eclipse中启动。

3.解压cas-client-3.2.1-release.zip
cas-client-core导入Eclipse

二:配置CAS-Client
我现在有两个项目需要整合单点登录,两个项目分部被绑定到测试域名
项目1:app1.testcas.com
项目2:app2.testcas.com
Cas-Server项目:demo.testcas.com
备注:cas-client需要commons-logging的支持,如果你的项目没有导入本jar包,需要额外导入。
打开项目1的WEB-INF/web.xml
加入如下配置,红色部分按实际情况修改:
<!-- ======================== start ======================== -->
<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>CAS Filter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value>https://demo.testcas.com/cas/login</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://app1.testcas.com</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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>https://demo.testcas.com/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value>http://app1.testcas.com</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CAS Validation Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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>
<!-- ======================== end ======================== -->
修改项目1的pom.xml
<dependency>
<groupId>org.jasig.cas.client</groupId>
<artifactId>cas-client-core</artifactId>
<version>3.2.1</version>
</dependency>
项目2按照同样步骤修改,只不过相应地址要适当修改。
三.启动三个项目
Cas-Server
app1
app2
在地址栏输入:https://demo.testcas.com/cas/login

默认的认证处理器支持那些用户名等于密码的账号,所以任意输入相同的用户名与密码即可登入。

四.单点登录
此时,我们已经实现了最简单的单点登录。
1.如果用户还未登录,此时无论访问app1的哪个网址,页面都会cas-client重定向到CAS登录页面。
重定向后的网址类似:
https://demo.testcas.com/cas/login?service=http%3A%2F%2Fapp1.testcas.com%2Fb2c-haohai-server%2Fuser%2FcasLogin
后缀了一个service参数。
2.当用户输入用户名与密码后点击登录,页面又会被重定向会刚才想要访问的页面,并且后缀了ticket参数
网址类似:
http://app1.testcas.com/b2c-haohai-server/user/casLogin?ticket=ST-1-l9mf0oHYjZdSSSVBQcd1-cas
3.当此时,用户再访问app2的网址时,这时就会绕过原有的登录页面,直接登入app2,app2实现了免登陆。
网址类似:
http://app2.testcas.com/b2c-server/user/casLogin?ticket=ST-2-VDMdOnCx9gAAnyQ3xfET-cas
4.当用户在浏览器输入
https://demo.testcas.com/cas/logout
强行注销后,再访问app1或者app2又会被重定向到CAS登录页面。
单点登录CAS使用记系列:
单点登录CAS使用记(一):前期准备以及为CAS-Server配置SSL协议
单点登录CAS使用记(二):部署CAS服务器以及客户端
单点登录CAS使用记(三):实现自定义验证用户登录
单点登录CAS使用记(四):为登录页面加上验证码
单点登录CAS使用记(五):cas-client不拦截静态资源以及无需登录的请求。
单点登录CAS使用记(六):单点登出、单点注销
单点登录CAS使用记(七):关于服务器超时以及客户端超时的分析
单点登录CAS使用记(八):使用maven的overlay实现无侵入的改造CAS
单点登录CAS使用记(二):部署CAS服务器以及客户端的更多相关文章
- cas 单点登录(SSO)实验之二: cas-client
cas 单点登录(SSO)实验之二: cas-client 参考文章: http://my.oschina.net/indestiny/blog/200768#comments http://wenk ...
- 单点登录(SSO)解决方案之 CAS 入门案例
单点登录: 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. ...
- 基于CAS的单点登录实战(2)-- 搭建cas的php客户端
在这之前已经搭好了CAS服务端 基于CAS的单点登录实战(1)-- 搭建cas服务器 PHP-Client php-Client是官方支持的,去官网下个最新版就好了.phpCAS 接入很简单,解压放到 ...
- 单点登录(SSO)解决方案之 CAS服务端数据源设置及页面改造
接上篇 单点登录(SSO)解决方案之 CAS 入门案例 服务端数据源设置: 开发中,我们登录的user信息都是存在数据库中的,下面说一下如何让用户名密码从我们的数据库表中做验证. 案例中我最终把cas ...
- 【CAS单点登录视频教程】 第05集 -- CAS服务器安装
第一步: 下载cas 服务器 cas-server-3.5.2-release.zip 目录 ----------------------------------------- [CAS单点登录视频教 ...
- 单点登录(SSO)解决方案之 CAS客户端与Spring Security集成
接上篇:单点登录(SSO)解决方案之 CAS服务端数据源设置及页面改造 Spring Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制 ...
- CAS实现单点登录SSO执行原理及部署
一.不落俗套的开始 1.背景介绍 单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. CAS框架:CAS(Centra ...
- 单点登录系统构建之二——SSO原理及CAS架构
基本概念 SSO(Single Sign On)单点登录,是在多个应用系统中,用户只需要登录一次就能访问所有相互信任的应用系统.它包括将这次的主要登录映射到其他应用中用户同一个用户的登录机制. SSO ...
- SSO 基于CAS实现单点登录 实例解析(二)
本文目录: 概述 演示环境 部署CAS-Server相关的Tomcat 部署CAS-Client相关的Tomcat 测试验证SSO 第一: 本demo在一个机器上实现(三个虚拟主机),来看SSO单点登 ...
- CAS学习笔记二:CAS单点登录流程
背景 由于公司项目甲方众多,各甲方为了统一登录用户体系实现单点登录(SSO)开始要求各乙方项目对接其搭建的CAS单点登录服务,有段时间对CAS的流程很迷,各厂商还有基于CAS进行二次开发的情况,所以对 ...
随机推荐
- Kafka笔记--指定消息的partition规则
参数的设定:参考资料 不错的资料:http://blog.csdn.net/honglei915/article/details/37697655 http://developer.51cto.com ...
- Node.js stream 流学习
由于node.js 创建http 是这样的 http.createServer(function(request,response){}).listen(2000); 里面的request 就是rea ...
- stdout 与 stderr 的区别
stdout 与 stderr 的区别 一直没有注意 stdout 与 stderr 的区别,以为只是不同的描述方式.看来不是这样的. stdout 主要处理的是使用者输出 stderr 主要处理的错 ...
- HDOJ(HDU) 2088 Box of Bricks(平均值)
Problem Description Little Bob likes playing with his box of bricks. He puts the bricks one upon ano ...
- HDU 4604 Deque 最长子序列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4604 Deque Time Limit: 4000/2000 MS (Java/Others) ...
- c# WinForm开发 DataGridView各种操作总结大全
一.单元格内容的操作 //取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index Consol ...
- 数据库 —— Access 数据库
0.Access 下载 1.Access 语法 链接:http://blog.csdn.net/tercel99/article/details/5725157 2.ADO 相关: 在VC++6.0中 ...
- HDU1257:最少拦截系统(LIS)
Problem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高 ...
- Android Toast 提示按两次返回键退出
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceS ...
- JAVA try-catch-finally-return
正常执行流程: try执行,遇到异常就跳到catch执行(以使得程序不会崩溃): 不管有没有异常catch,最后都执行finally 含return语句执行流程分析: 若try块中return ...