单点登录系统(SSO)之CAS(中央认证服务)
SSO(Single Sign On)单点登录系统,是在多个系统中值要求只要登录一次,就可以用已登录的身份访问多个系统,去掉了每次访问不同的系统都要重新登录的弊端。
CAS(中央/集中认证服务):The Central Authentication Service project, more commonly referred to as CAS is an authentication system originally created by Yale University to provide a trusted way for an application to authenticate a user.
CAS是实现SSO的一个开源项目,最初由耶鲁大学创建。很明显冲名字就可以看出其原理是:多个系统使用一个相同的“中央认证服务”来实现的。
1. CAS 架构:

1) 系统组成:分成了一个 CAS server 和 多个CAS clients 两大物理组成部分。
2)CAS Clients
The term “CAS client” has two distinct meanings in its common use. A CAS client is any CAS-enabled application that can communicate with the server via a supported protocol. A CAS client is also a software package that can be integrated with various software platforms and applications in order to communicate with the CAS server via some authentication protocol (e.g. CAS, SAML, OAuth). CAS clients supporting a number of software platforms and products have been developed.
CAS clients: 也就是 多个业务系统。我们用户在访问业务系统时,业务系统作为 CAS client, 来访问CAS server进行认证。实现方式是,将我们redirect到CAS server上,然后我们输入用户名密码,CAS server进行认证。所以相对于CAS server,我们用浏览器访问多个业务系统就是 CAS clients。
3)CAS Server
The CAS server is Java servlet built on the Spring Framework whose primary responsibility is to authenticate users and grant access to CAS-enabled services, commonly called CAS clients, by issuing and validating tickets. An SSO session is created when the server issues a ticket-granting ticket (TGT) to the user upon successful login. A service ticket (ST) is issued to a service at the user’s request via browser redirects using the TGT as a token. The ST is subsequently validated at the CAS server via back-channel communication. These interactions are described in great detail in the CAS Protocol document.
CAS server是一个基于spring的系统,其首要职责就是对登录用户进行认证,然后授权给它们去访问“业务系统”也就是CAS clients。其实现方式:发出票据和验证票据。比如,一个用户要登录一个“业务系统A”,那么该业务系统,将我们重定向到 CAS server, 然后我们输入用户名和密码等,然后CAS server进行认证,也就是验证用户名和密码是否正确,如果正确,就发给我们一个 TGT 票据,然后针对该“业务系统A”, CAS server 又根据TGT 生产一个专门针对该业务系统的 ST 票据。然后如果我们又去访问另外一个“业务系统B”,那么这个“业务系统B”又将我们重定向到 CAS server,但是这一次,我们携带了 TGT 票据,我们不用再次输入用户名和密码,CAS server 会根据我们的 TGT 针对该“业务系统B” 又生产一个专门针对该业务系统的 ST 票据。 然后我们又要访问“业务系统A”,此时我们有了 TGT 和 针对“业务系统A”的 ST 票据,这次,业务系统A会将自己的 ST 票据,发送给 CAS server 进行验证,如果存在。那么就认证通过。
总结一下:
1>第一次没有 TGT 和 ST 票据,需要输入 用户名和密码 在 CAS server上进行认证;
2>认证通过之后会 生成 TGT 票据和针对该 CAS client 的 ST 票据;
3>有了 ST 票据之后,CAS client 将 ST 票据发送给 CAS server 进行查找,如果存在则通过认证;
4>如果只有 TGT 票据,那么将 TGT 票据发给 CAS server,生成一个专门针对该 CAS client 的 ST 票据;
5> TGT 票据应该是基于cookie,也就是保存在cookie中的,而各个业务系统的 ST 票据是保存在自己的业务系统的内存中的;
4)第一次登陆时的交互过程:


5)Software Components
It is helpful to describe the CAS server in terms of three layered subsystems:
- Web (Spring MVC/Spring Webflow)
- Ticketing
- Authentication
Almost all deployment considerations and component configuration involve those three subsystems. The Web tier is the endpoint for communication with all external systems including CAS clients. The Web tier delegates to the ticketing subsystem to generate tickets for CAS client access. The SSO session begins with the issuance of a ticket-granting ticket on successful authentication, thus the ticketing subsystem frequently delegates to the authentication subsystem.
The authentication system is typically only processing requests at the start of the SSO session, though there are other cases when
it can be invoked (e.g. forced authentication).
CAS Server 系统的架构有三部组成(三个子系统): 1> web端;2> 票据系统; 3>认证系统;
web端代理了 CAS clients,来向票据系统申请票据和验证票据,票据系统根据要求产生票据和验证票据;而认证系统就是对输入的用户名和密码进行验证,验证成功之后,通知票据系统生成票据。所以认证系统只有在第一次登陆时才会使用到。票据系统应该是三个子系统中最繁忙的。
参考:
1)http://jasig.github.io/cas/4.0.x/planning/Architecture.html
2)http://sowow.sinaapp.com/archives/57
3)http://jasig.github.io/cas/4.0.x/index.html
单点登录系统(SSO)之CAS(中央认证服务)的更多相关文章
- 单点登录系统SSO实现
前些天被问到单点登录了,而据我当时做的这个模块两年了,现在重新温习并记录下,方便以后快速回忆起来 一.什么是单点登录系统 SSO全称Single Sign On.SSO是用户只需要登录一次就可以访问所 ...
- 单点登录系统(SSO)的开发思路
单点登录并不是一个新鲜的玩意儿,比较官方的解释是企业业务整合的解决方案之一,通俗来讲SSO就是一个通用的用户中心,国内比较流行的UCenter就是一套单点登录解决方案.而近期以CSDN明文存储用户密码 ...
- 单点登录系统---SSO
1.------------------SSO介绍--------------------------------- 有什么卵用?搞什么飞机的? 大家看看这个图,一个系统是没有问题.如果是分布式的系统 ...
- 多平台的网站实现单点登录系统(SSO)的开发思路 让你的会员中心更加统一(参考资料)
单点登录并不是一个新鲜的玩意儿,比较官方的解释是企业业务整合的解决方案之一,通俗来讲SSO就是一个通用的用户中心,国内比较流行的UCenter就是一套单点登录解决方案.而近期以CSDN明文存储用户密码 ...
- 单点登录系统(SSO)详细设计说明书(上篇)
1.引言 1.1编写目的 为了单点登录系统(SSO系统)的可行性,完整性,并能按照预期的设想实现该系统,特编写需求说明书. 同时,说明书也发挥与策划和设计人员更好地沟通的作用. 1.2 ...
- 第04项目:淘淘商城(SpringMVC+Spring+Mybatis)【第十天】(单点登录系统实现)
https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...
- 单点登录系统CAS筹建及取得更多用户信息的实现
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- CAS实现的单点登录系统
单点登录(single sign on ),简称SSO. 纯属学习用,对来自网络的部分如果侵害了您的权力,请联系我.QQ:262800095 SSO的定义是在多个应用系统中,用户只需要登录一次就可以访 ...
- 【Java EE 学习 68】【单点登录】【两种单点登录类型:SSO/CAS、相同一级域名的SSO】
单点登录:SSO(Single Sign On) 什么是单点登录:大白话就是多个网站共享一个用户名和密码的技术,对于普通用户来说,只需要登录其中任意一个网站,登录其他网站的时候就能够自动登陆,不需要再 ...
随机推荐
- php中mysql操作的buffer知识
php与mysql的连接有三种方式,mysql,mysqli,pdo.不管使用哪种方式进行连接,都有使用buffer和不使用buffer的区别. 什么叫使用buffer和不使用buffer呢? 客户端 ...
- 通过LINQ表达式树动态构建查询条件
第一种方法: public static class PredicateExtensions { public static Expression<Func<T, bool>> ...
- Vim杂记:markdown插件
一.安装插件 从以下地址下载压缩包 github下载:https://github.com/plasticboy/vim-markdown plasticboy下载:http://plasticboy ...
- IOS开发UI基础UITextFidle相关属性
UITextFidle相关属性 • enablesReturnKeyAutomatically默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的. ...
- 一个python爬虫小程序
起因 深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么“装饰器”啊.“多线程”啊都没有学到. 想到廖雪峰大神的python教程很经典.很著名.就想找找有木有pdf版的 ...
- 重构第20天 提取子类(Extact SubClass)
理解:提取子类就是把基类中,不是所有子类或者只有少数子类用到的方法,提取出来,调整到子类中去. 详解:下面的代码中我们用到一个单一的类Registration,来处理学生选课信息. public cl ...
- .net4.0注册到IIS ,重新注册IIS ,iis注册
IIS和.netfw4.0安装顺序是从前到后,如果不小心颠倒了,无所谓. 打开程序-运行-cmd:输入一下命令重新注册IIS C:\WINDOWS\Microsoft.NET\Framework\v4 ...
- asp.net学习之Repeater控件
asp.net学习之Repeater控件 文章摘自:http://www.cnblogs.com/shipfi/archive/2009/10/19/1585703.html Repeater控件和D ...
- windows远程控制
windows+r 输入 mstsc 打开远程控制 首先,确定目标机器支持远程控制 问题解决: Win7远程桌面提示您的凭据不工作: http://jingyan.baidu.com/article ...
- (旧)子数涵数·PS——换脸
一.打开Photoshop,打开下载好的两张素材图(均在百度下载的). 二.选中人物脸的部分,不需要很精确(哪种抠图方式都行,我用的是矩形选框工具),再使用移动工具(快捷键为V,或者按着Ctrl),将 ...