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. C# 异步和委托学习

    IAsyncResult是接口: IAsyncResult 异步设计模式通过名为 BeginOperationName 和 EndOperationName 的两个方法来实现原同步方法的异步调用,如 ...

  2. Tomcat 原理篇

    TOMCAT 原理篇一.Tomcat 组成(Tomcat 由以下组件组成) 1.server a) Server是一个Catalina Servlet容器: b) Server 可以包含一个或多个se ...

  3. linux服务器加入windows域时报错Ticket expired

    [root@rusky]# net ads join -U administrator Enter administrator's password: kinit succeeded but ads_ ...

  4. 执行curl -sSL 提示curl: (35) SSL connect error

    今天,添加容器节点报错,执行如下 curl -sSL https://shipyard-project.com/deploy| ACTION=node DISCOVERY=etcd://192.168 ...

  5. Javascript基础form表单

    <!DOCTYPE HTML> <html> <head> <script type="text/javascript" charset= ...

  6. 豆瓣移动端风格的css命名方法与学习

    在CSS取名相对于刚入门来说是最头疼的事情,往往取一个可读性的名字相对以后的代码风格还是很重要的. 在配合团队方面一个好的类名可以帮助同事来理解,增加团队之间的效率有着很大的意义. 豆瓣的前段相对其他 ...

  7. C++中string类的基本用法

    #include <iostream> #include <set> using namespace std; int main() { string line; getlin ...

  8. Convert.ToInt32()和int.Parse()的区别

    (1)Convert.ToInt32(null)会返回0而不会报异常,但int.Parse(null)则会产生异常 (2)Convert.ToInt32("")和int.Parse ...

  9. 在windows中搭建php开发环境

    一.wampserver wampserver是一个安装集成包,包含了开发所需的apache,mysql,php,简单方便. 下载地址 http://www.xiazaiba.com/html/279 ...

  10. Java中通过递归调用删除文件夹下所有文件

    摘自 : http://blog.sina.com.cn/s/blog_79333b2c0100xiu4.html import java.io.File; public class FileTest ...