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原理与协议的更多相关文章

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

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

  2. J.U.C Atomic(一)CAS原理

    CAS概念 CAS:Compare And Swap,比较并交换.java.util.concurrent包完全是建立于CAS机制之上的. CAS原理 Java CAS是通过调用Unsafe的nati ...

  3. 单点登录之CAS原理和实现(转载)

    转载源:https://www.jianshu.com/p/613c615b7ef1 单点登录之CAS原理和实现 来源于作者刘欣的<码农翻身> + 自己的备注理解 这家集团公司财大气粗,竟 ...

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

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

  5. JAVA CAS原理

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

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

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

  7. JAVA CAS原理深度分析

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

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

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

  9. Spring Security 集成 CAS(基于HTTP协议版本)

    Spring Security 集成 CAS(基于HTTP协议版本) 近段时间一直研究Spring Security 集成 CAS,网上资料相关资料也很多,不过大都是基于Https的安全认证;使用ht ...

随机推荐

  1. extern C的作用详解

    extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码.加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C+ ...

  2. mongodb 详解 error:10061 由于目标计算机积极拒绝,无法连接解决方法

    mongodb下载地址(32位):下载地址 自己选择版本 建立如下与mongodb并行的两个文件夹data和log. 然后建立mongo.config. 在mongo.config配置文件中输入: # ...

  3. c#读写cookie

    读 response.SetCokie(new HttpCookie("Color",TextBox1.Text);写 request.Cookies["color&qu ...

  4. Java关键字transient和volatile

    transient标记的变量,在进行序列化的时候,这个字段不进行序列化操作. volatile标记的变量,在进行读写时,必须强制的与内存同步,即在读的时候需要从内存中读取,写的时候也需要回写到内存中. ...

  5. Android发送通知栏通知

    /** * 发送通知 * * @param message */ @SuppressWarnings("deprecation") @SuppressLint("NewA ...

  6. javascript第一课练习

    <!doctype html> <html lang="en">  <head>   <meta charset="UTF-8& ...

  7. 64位Ubuntu14.04搭建ADT开发环境

    本来放假是要出去玩的,结果出游计划拖到了周一,今天先来无事看看ubuntu最近发展得怎么样了,顺便把ADT也搭建好,方便以后研究android框架.想想在windows下,ADT直接down下来解压就 ...

  8. AngularJS 基础教程一:

    一:了解AngularJS AngularJS是一款非常优秀的前端高级 JS 框架,由 Misko Hevery 等人创建 2009 年被 Google 收购,用于其多款产品 有一个全职的开发团队继续 ...

  9. shell中的for、while、until

    for var in list do commands done 在每个迭代中,变量var会包含列表中的当前值,第一个迭代会使用列表中的第一个值,第二个迭代使用第二个值. 在do和done中,$var ...

  10. Shell脚本调试技术

    http://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/ 一. 前言 shell编程在unix/linux世界中使用得非常广泛,熟练掌握 ...