基础模式

1. 访问服务:  客户端发送请求访问应用系统提供的服务资源。

2. 定向认证:  客户端会重定向用户请求到 服务器。

3. 用户认证:用户身份认证。

4. 发放票据: 服务器会产生一个随机的 Service Ticket 。

5. 验证票据:服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问服务。

6. 传输用户信息: 服务器验证票据通过后,传输用户认证结果信息给客户端。

代理模式

该模式形式为用户访问 App1 , App1 又依赖于 App2 来获取一些信息。这种情况下,假设 App2 也是需要对 User 进行身份验证才能访问,那么,为了不影响用户体验(过多的重定向导致 User 的 浏览器 窗口不停地闪动 ) , CAS 引入了一种 Proxy 认证机制,即 CAS Client 可以代理用户去访问其它 Web 应用。

代理的前提是需要 CAS Client 拥有用户的身份信息 。PGT 就是 CAS Client 端持有的对用户身份信息的一种凭据。凭借 TGC , User 可以免去输入密码以获取访问其它服务的 Service Ticket 。

PGTURL 用于表示一个 Proxy 服务,是一个回调链接

PGT 相当于代理证

PGTIOU 为取代理证的钥匙,用来与 PGT 做关联关系

获取 PGT 的过程:

在验证 ST 时提供了一个额外的 PGTURL 给 CAS Server CAS Client 拿到了 PGT(PGTIOU-85 … ),就可以通过 PGT 向后端 Web 应用进行认证。

TGTSTPGTPT之间关系

1)ST是TGT签发的。用户在CAS上认证成功后,CAS生成TGT,用TGT签发一个ST, 然后把ST的值redirect到客户端应用。

2)PGT是ST签发的。用户凭借ST去访问Proxy service,Proxy service去CAS验证ST(同时传递PGTURL参数给CAS),如果ST验证成功,则CAS用ST签发一个PGT。

3)PT是PGT签发的。CAS根据传来的PGT生成一个PT对象

为什么要PGTURL呢?为什么不是验证St时直接返回PGT?

假如hacker获取了ST,就可以通过ST到Server验证并获取PGT,这样导致所有应用都可以访问,而不只是ST所对应的服务了。 CAS要求PGTURL必须为Https。

CAS中的PGTIOU(Proxy Granting Ticket I Owe You )作用:

CAS调用PGTURL返回 PGTIOU和PGT

参考

CAS原理

jasig wiki: Proxy CAS Walkthrough

CAS 原理的更多相关文章

  1. 采用CAS原理构建单点登录

    企业的信息化过程是一个循序渐进的过程,在企业各个业务网站逐步建设的过程中,根据各种业务信息水平的需要构建了相应的应用系统,由于这些应用系统一般是在不同的时期开发完成的,各应用系统由于功能侧重.设计方法 ...

  2. JAVA CAS原理深度分析-转载

    参考文档: http://www.blogjava.net/xylz/archive/2010/07/04/325206.html http://blog.hesey.net/2011/09/reso ...

  3. JAVA CAS原理

    转自: http://blog.csdn.net/hsuxu/article/details/9467651 CAS CAS: Compare and Swap java.util.concurren ...

  4. 【转】JAVA CAS原理深度分析

    java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包.可见CAS的重要性. CAS CAS:Compare and Swap, 翻译成比较并交换. java.uti ...

  5. JAVA CAS原理深度分析

    参考文档: http://www.blogjava.net/xylz/archive/2010/07/04/325206.html http://blog.hesey.net/2011/09/reso ...

  6. CAS原理与协议

    SSO英文全称Single Sign On,单点登录. SSO是在多个应用系统中,用户仅仅须要登录一次就能够訪问全部相互信任的应用系统. SSO的解决方式非常多,比方收费的有UTrust.惠普灵动等, ...

  7. JAVA CAS原理深度分析(转)

    看了一堆文章,终于把JAVA CAS的原理深入分析清楚了. 感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档: http://www.blogjava.net/xylz/ ...

  8. Java中的CAS原理

    前言:在对AQS框架进行分析的过程中发现了很多CAS操作,因此有必要对CAS进行一个梳理,也便更清楚的了解其原理. 1.CAS是什么 CAS,是compare and swap的缩写,中文含义:比较交 ...

  9. JAVA CAS原理浅谈

    java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包.可见CAS的重要性. CAS CAS:Compare and Swap, 翻译成比较并交换. java.uti ...

随机推荐

  1. 《深入理解Java虚拟机》读书笔记:垃圾收集器与内存分配策略

    请移步至:http://zhanjindong.info/2014/05/18/java-gc/

  2. Java如何计数替换字符串中第一次出现的子字符串?

    在Java编程中,如何拆分正则表达式和字符串? 以下示例演示如何使用Matcher类的replaceFirst()方法替换字符中指定的子字符串的首次出现. package com.yiibai; im ...

  3. zabbix参考文档

    http://www.zsythink.net/archives/category/%E8%BF%90%E7%BB%B4%E7%9B%B8%E5%85%B3/zabbix/

  4. /usr/bin/ld: cannot find -lncurses是咋回事?

    你的系統是32位的還是64位的? 如果是32位的就用:sudo apt-get install libncurses5-dev 如果是64位的,就用:sudo apt-get install lib3 ...

  5. Android Pull解析XML

    在上文中介绍了使用sax方式解析xml,这里介绍下在Android中极力推荐的xmlpull方式解析xml.xmlpull不仅仅可以使用在Android上,同样也适用于javase,但在javase环 ...

  6. 电子书阅读(epub) --- calibre

    https://calibre-ebook.com/download   calibre https://www.fosshub.com/Calibre.html   win 64 bit calib ...

  7. 重写 Ext.form.field 扩展功能

    直接代码,放项目overrides文件夹中即可 //重写类 表单父类 //支持allowBlank动态绑定 Ext.define("override.form.field.Base" ...

  8. vss2005源码管理工具使用问题

    vss2005有账号,但是连接不上,可能是TCP/IP NetBIOS Helper服务停止了,启用即可

  9. Installation Guide Ubuntu 16.04

    Beside the installation guide on the main page, here is a guide to install GenieACS off a freshly in ...

  10. Echarts Map 值域为小数的原因

    最近做一个项目用到了Echarts Map不知道怎么回事,有时多了一位小时,可这个意义不用小数表示(1.0个人似乎觉得有点奇怪嘞 {boolean}calculable false 是否启用值域漫游, ...