CAS原理与协议
SSO英文全称Single Sign On,单点登录。
SSO是在多个应用系统中,用户仅仅须要登录一次就能够訪问全部相互信任的应用系统。
SSO的解决方式非常多,比方收费的有UTrust、惠普灵动等,开源的有CAS、Smart SSO等,当中应用最为广泛的是CAS。
CAS (Central Authentication Service)中央认证服务。CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架。
CAS 具有下面特点:
开源的企业级单点登录解决方式。
CAS Server 为须要独立部署的 Web 应用。
CAS Client 支持许多的client(这里指单点登录系统中的各个 Web 应用)。包含 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。
CAS 原理和协议
结构上: CAS 包括两部分
1、CAS Server
CAS Server 负责完毕对用户的认证工作, CAS Server 须要独立部署,有不止一种 CAS Server 的实现。
CAS Server 会处理username / password等凭证 (Credentials) ,它可能会到数据库检索一条用户帐号信息,也可能在 XML 文件里检索用户password,对这样的方式。 CAS 均提供一种灵活但同一的接口 / 实现分离的方式, CAS 到底是用何种认证方式。跟 CAS 协议是分离的,也就是。这个认证的实现细节能够自己定制和扩展。
2、CAS Client
CAS Client 负责部署在client(指 Web 应用)。原则上, CAS Client 的部署意味着。当有对本地 Web 应用的受保护资源的訪问请求。而且须要对请求方进行身份认证, Web 应用不再接受不论什么的usernamepassword等类似的 Credentials ,而是重定向到 CAS Server 进行认证。
眼下, CAS Client 支持(某些在完好中)许多的client,包含 Java 、 .Net 、 ISAPI 、 Php 、 Perl 、 uPortal 、 Acegi 、 Ruby 、 VBScript 等client,差点儿可以这样说, CAS 协议可以适合不论什么语言编写的client应用。
协议:
整个协议的基础思想都是基于票据方式。
以下,我们看看CAS的基本协议框架:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWJveTEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
CAS Client 与受保护的client应用部署在一起,以 Filter 方式保护受保护的资源。对于訪问受保护资源的每一个 Web 请求。CAS Client 会分析该请求的 Http 请求中是否包括 Service Ticket。假设没有。则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址。并传递 Service (也就是要訪问的目的资源地址),以便登录成功过后转回该地址。用户在第
3 步中输入认证信息,假设登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证。之后系统自己主动重定向到 Service 所在地址,并为client浏览器设置一个 Ticket Granted Cookie(TGC)。CAS Client 在拿到 Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份合适。以确保 Service Ticket 的合法性。
在该协议中。全部与 CAS 的交互均採用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,可是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。
另外。CAS 协议中还提供了 Proxy (代理)模式。以适应更加高级、复杂的应用场景
CAS原理与协议的更多相关文章
- 采用CAS原理构建单点登录
企业的信息化过程是一个循序渐进的过程,在企业各个业务网站逐步建设的过程中,根据各种业务信息水平的需要构建了相应的应用系统,由于这些应用系统一般是在不同的时期开发完成的,各应用系统由于功能侧重.设计方法 ...
- J.U.C Atomic(一)CAS原理
CAS概念 CAS:Compare And Swap,比较并交换.java.util.concurrent包完全是建立于CAS机制之上的. CAS原理 Java CAS是通过调用Unsafe的nati ...
- 单点登录之CAS原理和实现(转载)
转载源:https://www.jianshu.com/p/613c615b7ef1 单点登录之CAS原理和实现 来源于作者刘欣的<码农翻身> + 自己的备注理解 这家集团公司财大气粗,竟 ...
- JAVA CAS原理深度分析-转载
参考文档: http://www.blogjava.net/xylz/archive/2010/07/04/325206.html http://blog.hesey.net/2011/09/reso ...
- JAVA CAS原理
转自: http://blog.csdn.net/hsuxu/article/details/9467651 CAS CAS: Compare and Swap java.util.concurren ...
- 【转】JAVA CAS原理深度分析
java.util.concurrent包完全建立在CAS之上的,没有CAS就不会有此包.可见CAS的重要性. CAS CAS:Compare and Swap, 翻译成比较并交换. java.uti ...
- JAVA CAS原理深度分析
参考文档: http://www.blogjava.net/xylz/archive/2010/07/04/325206.html http://blog.hesey.net/2011/09/reso ...
- JAVA CAS原理深度分析(转)
看了一堆文章,终于把JAVA CAS的原理深入分析清楚了. 感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档: http://www.blogjava.net/xylz/ ...
- Spring Security 集成 CAS(基于HTTP协议版本)
Spring Security 集成 CAS(基于HTTP协议版本) 近段时间一直研究Spring Security 集成 CAS,网上资料相关资料也很多,不过大都是基于Https的安全认证;使用ht ...
随机推荐
- 安装tcmalloc
安装google-perftools:#tar zxvf google-perftools-1.6.tar.gz #cd google-perftools-1.6 #./configure#make# ...
- Hexo博客搭建图文教程
准备 你需要准备好以下软件: Node.js环境 Git Windows 配置Node.js环境 下载Node.js安装文件: Windows Installer 32-bit Windows Ins ...
- C# 超级简单的Telnet (TcpClient)客户端
基于Sockets 没什么好说的,代码说明了所有 using System; using System.Collections.Generic; using System.Linq; using Sy ...
- scala中的view bound与context bound
1.scala中的<%意识是“view bounds”(视界) ,它比<:的使用范围更广,还能进行隐式转换,是一种语法糖. 下面的两种写法是等效的,在编译之后完全一样. object Te ...
- 变量a的定义
1.一个整型数 int a; 2.一个指向整型数的指针 int *a; 3.一个指向指针的指针,它指向的指针是指向一个整形数 int **a; 4.一个有10个整型数的数组 ]; 5.一个有10个指针 ...
- c语言构建动态数组
#include <stdio.h> #include <stdlib.h> int main(void) { int len; int * arr; printf(" ...
- struts 标签引用出错
几句句话概括 1.检查 web.xml 出现错误自己改 配置后filter jsp-config 2.检查 tld 目录下的东西 是否缺少 3. 将包复制到web的lib目录下后 之后 b ...
- 对plist文件的简单封装
常常会用到对plist文件的封装 +(NSArray *)LoadFriendsDataFromPlist:(NSString *)plistName{ NSString * filePath = [ ...
- 给软件增加注册功能 c#
1.软件注册类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- PAT 65. A+B and C (64bit) (20)
题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1065 思路分析: 1)对a+b造成的long long 类型的数据溢出进行特殊处理: a> ...