CAS单点登录系统简介
一、cas简介
全名:Central Authentication Service
特点:
1、开源的、多协议的 SSO 解决方案; Protocols : Custom Protocol 、 CAS 、 OAuth 、 OpenID 、 RESTful API 、 SAML1.1 、 SAML2.0 等。
2、支持多种认证机制: Active Directory 、 JAAS 、 JDBC 、 LDAP 、 X.509 Certificates 等;
3、安全策略:使用票据( Ticket )来实现支持的认证协议;
4、支持授权:可以决定哪些服务可以请求和验证服务票据( Service Ticket );
5、高可用性:通过把认证过的状态数据存储在 TicketRegistry 组件中,这些组件有很多支持分布式环境的实现,如: BerkleyDB 、 Default 、 EhcacheTicketRegistry 、 JDBCTicketRegistry 、 JBOSS TreeCache 、 JpaTicketRegistry 、 MemcacheTicketRegistry 等
6、支持多种客户端: Java 、 .Net 、 PHP 、 Perl 、 Apache, uPortal 等。
二、原理
2.1 CAS Server
完成认证工作,对用户名、密码进行校验,需要独立部署,如集团SSO中的sso项目。
2.2 CAS Client
使用Filter将请求拦截下来,当请求中含票据时,重定向到CAS Server进行验证,不含票据时,到CAS Server登录页面进行登录,如集团中的esmp项目。
2.3 协议图

从结构上看,CAS包含两个部分:CAS Server 和CAS Client需要独立部署,主要负责对用户的认证工作;CAS Client负责处理对客户端受保护资源的访问请求,需要登录时,重定向到CAS Server.图1是CAS最基本的协议过程:
CAS Client 与受保护的客户端应用部署在一起,以Filter方式保护 Web 应用的受保护资源,过滤从客户端过来的每一个Web请求,同时, CAS Client会分析HTTP 请求中是否包请求 Service Ticket( 上图中的 Ticket) ,如果没有,则说明该用户是没有经过认证的,于是,CAS Client会重定向用户请求到CAS Server( Step 2 )。 Step3是用户认证过程,如果用户提供了正确的Credentials, CAS Server 会产生一个随机的 Service Ticket,然后,缓存该 Ticket ,并且重定向用户到CAS Client(附带刚才产生的Service Ticket), Service Ticket 是不可以伪造的,最后, Step 5 和 Step6是 CAS Client 和 CAS Server之间完成了一个对用户的身份核实,用Ticket查到 Username ,因为 Ticket是 CAS Server产生的,因此,所以 CAS Server 的判断是毋庸置疑的。
该协议完成了一个很简单的任务,所有与CAS的交互均采用SSL协议,确保ST和TGC的安全性。协议工作过程会有2此重定向过程,但是CAS Client与CAS Server之间进行ticket验证的过程对于用户是透明的。
1. 访问服务: SSO 客户端发送请求访问应用系统提供的服务资源。
2. 定向认证: SSO 客户端会重定向用户请求到 SSO 服务器。
3. 用户认证:用户身份认证。
4. 发放票据: SSO 服务器会产生一个随机的 Service Ticket 。
5. 验证票据: SSO 服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问服务。
6. 传输用户信息: SSO 服务器验证票据通过后,传输用户认证结果信息给客户端。
2.4 时序图

比如A、B两个CAS客户端,当A登录后,A中保存session(流程这里不做重述,见上图),那这个时候B再去请求,应该是不用再次输入用户名密码认证的。具体流程:
浏览器拿着cookie到B(上图1);B发现没有session,会到CAS服务端去认证,发现是已登录用户,所以返回ST重定向到浏览器(上图2);浏览器再重定向到B并发送ST参数(上图4);B再去CAS Server认证ST,确认已登录(上图5);创建session (上图6);登录成功(上图7)
CAS单点登录系统简介的更多相关文章
- CAS单点登录系统整合——注册的问题
最近一段时间在搞CAS单点登录系统,涉及到几个子系统的整合问题.对于注册,这里遇到了一个选择: 在子系统内完成注册,然后把信息同步到CAS系统: 在CAS系统中完成基本信息的注册,比如:用户名.邮箱. ...
- CAS单点登录系统入门--分布式登录验证
1.开源单点登录系统CAS入门 1.1 什么是单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要 ...
- cas单点登录系统:客户端(client)详细配置(包含统一单点注销配置)
最近一直在研究cas登录中心这一块的应用,分享一下记录的一些笔记和心得.后面会把cas-server端的配置和重构,另外还有这几天再搞nginx+cas的https反向代理配置,以及cas的证书相关的 ...
- CAS单点登录系统--进阶
2.CAS服务端数据源设置 2.1需求分析 我们现在让用户名密码从我们的优乐选的user表里做验证 2.2配置数据源 (1)修改cas服务端中web-inf下deployerConfigContext ...
- cas单点登录系统:客户端(client)详细配置
最近一直在研究cas登录中心这一块的应用,分享一下记录的一些笔记和心得.后面会把cas-server端的配置和重构,另外还有这几天再搞nginx+cas的https反向代理配置,以及cas的证书相关的 ...
- SSO之CAS单点登录详细搭建教程
本教程是我个人编写,花费几个小时的时间,给需要学习的人员学习使用,希望能帮助到你们. [环境说明]:本文演示过程在同一个机器上的(也可以在三台实体机器或者三个的虚拟机上),环境如下: windows7 ...
- cas系列(一)--cas单点登录基本原理
(这段时间打算做单点登录,因此研究了一些cas资料并作为一个系列记录下来,一来可能会帮助一些人,二来对我自己所学知识也是一个巩固.) 一.为什么要实现单点登录 随着信息化不断发展,企业的信息化过程是一 ...
- 单点登录系统实现基于SpringBoot
今天的干货有点湿,里面夹杂着我的泪水.可能也只有代码才能让我暂时的平静.通过本章内容你将学到单点登录系统和传统登录系统的区别,单点登录系统设计思路,Spring4 Java配置方式整合HttpClie ...
- 单点登录系统CAS筹建及取得更多用户信息的实现
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
随机推荐
- 编译android源码m、mm、mmm命令的使用
http://blog.163.com/zz_forward/blog/static/212898222201442873435471/ gcc怎么查看它的默认include路径和库的路径呢? //- ...
- PHP搜索文件夹下全部文件
搜索文件夹下全部文件 //搜索文件夹下全部文件,暂时不支持中文文件名 public function scanFile($path) { if (!is_dir($path)) return arra ...
- HGVS的变异格式
符号: 1.HGVS的变异格式由两部分组成: 1.1 reference sequence file identifier (accession.version-number) : actual d ...
- 20145230 《Java程序设计》第8周学习总结
20145230 <Java程序设计>第8周学习总结 教材学习内容 NIO与NIO2 NIO使用频道(Channel)来衔接数据节点,在处理数据时,NIO可以设定缓冲区(Buffer)容量 ...
- cocos2dx打飞机项目笔记二:BulletLayer类
BulletLayer.h 内容如下 class BulletLayer : public cocos2d::CCLayer { public: CC_SYNTHESIZE(bool, m_IsHer ...
- 默认连接电脑的模式为MTP【转】
本文转载自:https://blog.csdn.net/tangzhihai0421/article/details/53487208 Android L后默认的usb连接模式为“仅充电”,而且不会随 ...
- linux 安装jdk1.7 环境
由于各Linux开发厂商的不同,因此不同开发厂商的Linux版本操作细节也不一样,今天就来说一下CentOS下JDK的安装: 方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创 ...
- 用javascript实现的验证码
<html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> ...
- java filter 实现权限控制
import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Http ...
- ggplot笔记001——ggplot2安装
R3.2.2版安装ggplot2 今天安装ggplot2,开始用的是R3.2.1版本,但是一直报错.后面换了一个最新的R3.2.2,但安装时还是一样报错,原因是munsell这个包 ...