转载自:http ://www.cnblogs.com/lihuidu/p/6495247.html

1,基于饼干的单点登录的回顾

基于Cookie的的单点登录核心原理:

将用户名密码加密之后存于饼干中,之后访问网站时在过滤器(过滤器)中校验用户权限,如果没有权限则从曲奇中取出用户名密码进行登录,让用户从某种意义上觉得只登录了一次。

该方式缺点就是多次传送用户名密码,增加被盗风险,以及不能跨域。同时www.qiandu.com与mail.qiandu.com同时拥有登录逻辑的代码,如果涉及到修改操作,则需要修改两处。

2,统一认证中心方案原理

      在生活中我们也有类似的相关生活经验,例如你去食堂吃饭,食堂打饭的阿姨(www.qiandu.com)告诉你,不收现金。并且告诉你,你去门口找换票的(护照。 COM)换小票。于是你换完票之后,再去找食堂阿姨,食堂阿姨拿着你的票,问门口换票的,这个票是真的吗?换票的说,是真的,于是给你打饭了。
      基于上述生活中的场景,我们将基于Cookie的的单点登录改良以后的方案如下:

经过分析,饼干单点登录认证太过于分散,每个网站都持有一份登陆认证代码。于是我们将认证统一化,形成一个独立的服务。当我们需要登录操作时,则重定向到统一认证中心http://passport.com于是乎整个流程就如上图所示:
      第一步:用户访问www.qiandu.com过滤器判断用户是否登录,没有登录,则重定向(302)到网站的HTTP ://passport.com。
      第二步:重定向到passport.com,输入用户名密码.passport.com将用户登录的信息记录到服务器的会话中。
      第三步:passport.com给浏览器发送一个特殊的凭证,浏览器将凭证交给www.qiandu.com,www.qiandu.com则拿着浏览器交给他的凭证去passport.com验证凭证是否有效,从而判断用户是否登录成功。
      第四步:登录成功,浏览器与网站之间进行正常的访问。

3,Yelu大学研发的CAS(Central Authentication Server)

。下面就以耶鲁大学研发的CAS为分析依据,分析其工作原理首先看一下最上层的项目部署图:

部署项目时需要部署一个独立的认证中心(cas.qiandu.com),以及其他Ñ个用户自己的网络服务。

认证中心:也就是cas.qiandu.com,即CAS服务器用来提供认证服务,由CAS框架提供,用户只需要根据业务实现认证的逻辑即可。

用户的网络项目:只需要在web.xml文件中配置几个过滤器,用来保护资源,过滤器也是CAS框架提供了,即CAS的客户端,基本不需要改动可以直接使用。

如图4所示,CAS的详细登录流程

上图是3个登录场景,分别为:第一次访问www.qiandu.com,第二次访问,以及登录状态下第一次访问mail.qiandu.com。

下面就详细说明上图中每个数字标号做了什么,以及相关的请求内容,响应内容。

4.1,第一次访问www.qiandu.com

标号1:用户访问http://www.qiandu.com,经过他的第一个过滤器(CAS提供,在web.xml中中配置)AuthenticationFilter。

过滤器全称:org.jasig.cas.client.authentication.AuthenticationFilter

主要作用:判断是否登录,如果没有登录则重定向到认证中心。

标号2:www.qiandu.com发现用户没有登录,则返回浏览器重定向地址。

首先可以看到我们请求www.qiandu.com,之后浏览器返回状态码302,然后让浏览器重定向到cas.qiandu.com并且通过GET的方式添加参数的服务,该参数目的是登录成功之后会要重定向回来,因此需要该参数。并且你会发现,其实服务器的值就是编码之后的我们请求www.qiandu.com的地址。

标号3:浏览器接收到重定向之后发起重定向,请求cas.qiandu.com。

标号4:认证中心cas.qiandu.com接收到登录请求,返回登陆页面。

上图就是标号3的请求,以及标号4的响应。请求的URL是标号2返回的URL。之后认证中心就展示登录的页面,等待用户输入用户名密码。

标号5:用户在cas.qiandu.com的登录页面输入用户名密码,提交。

标号6:服务器接收到用户名密码,则验证是否有效,验证逻辑可以使用CAS-服务器提供现成的,也可以自己实现。

上图就是标号5的请求,以及标号6的响应了。当cas.qiandu.com即CSA-服务器认证通过之后,会返回给浏览器302,重定向的地址就是引用站点中的服务参数对应的值。后边并通过GET的方式挟带了一个票令牌,这个票就是ST(数字3处)。同时会在饼干中设置一个CASTGC,该饼干是网站cas.qiandu.com的饼干,只有访问这个网站才会携带这个cookie的过去。

饼干中的CASTGC:向饼干中添加该值的目的是当下次访问cas.qiandu.com时,浏览器将饼干中的TGC携带到服务器,服务器根据这个TGC,查找与之对应的TGT从而判断用户是否登录过了,是否需要展示登录页面.TGT与TGC的关系就像SESSION与曲奇中SESSIONID的关系。

TGT:Ticket Granted Ticket(俗称大令牌,或者说票根,他可以签发ST)

TGC:Ticket Granted Cookie(Cookie中的值),存在Cookie中,根据他可以找到TGT。

ST:Service Ticket(小令牌),是TGT生成的,默认是用一次就生效了。也就是上面数字3处的票价。

标号7:浏览器从cas.qiandu.com哪里拿到票之后,就根据指示重定向到www.qiandu.com,请求的URL就是上面返回的URL。

标号8:www.qiandu.com在过滤器中会取到票的值,然后通过HTTP方式调用cas.qiandu.com验证该票是否是有效的。

标号9:cas.qiandu.com接收到票之后,验证,验证通过返回结果告诉www.qiandu.com该票有效。

标号10:www.qiandu.com接收到CAS-服务器的返回,知道了用户合法,展示相关资源到用户浏览器上。

至此,第一次访问的整个流程结束,其中标号8与标号9的环节是通过代码调用的,并不是浏览器发起,所以没有截取到报文。

4.2,第二次访问www.qiandu.com

上面以及访问过一次了,当第二次访问的时候发生了什么呢?

标号11:用户发起请求,访问www.qiandu.com会经过CAS的客户端,也就是过滤器,因为第一次访问成功之后www.qiandu.com中会在会议中记录用户信息,因此这里直接就通过了,不用验证了。

标号12:用户通过权限验证,浏览器返回正常资源。

4.3,访问mail.qiandu.com

标号13:用户在www.qiandu.com正常上网,突然想访问mail.qiandu.com,于是发起访问mail.qiandu.com的请求。

标号14:mail.qiandu.com接收到请求,发现第一次访问,于是给他一个重定向的地址,让他去找认证中心登录。

上图可以看到,用户请求mail.qiandu.com,然后返回给他一个网址,状态302重定向,服务参数就是回来的地址。

标号15:浏览器根据14返回的地址,发起重定向,因为之前访问过一次了,因此这次会携带上次返回的饼干:TGC到认证中心。

标号16:认证中心收到请求,发现TGC对应了一个TGT,于是用TGT签发一个ST,并且返回给浏览器,让他重定向到mail.qiandu.com

可以发现请求的时候是携带饼干:CASTGC的,响应的就是一个地址加上TGT签发的ST也就是车票。

标号17:浏览器根据16返回的网址发起重定向。

标号18:mail.qiandu.com获取票去认证中心验证是否有效。

标号19:认证成功,返回在mail.qiandu.com的会话中设置登录状态,下次就直接登录。

标号20:认证成功之后就反正用想要访问的资源了。

CAS教程-第一篇-CAS单点登录原理解析相关推荐

  1. CAS单点登录原理解析及相关配置

    1.基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中 ...

  2. CAS单点登录原理简单介绍

    1. SSO简介 1.1 单点登录定义 单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统. ...

  3. cas跨域单点登录原理_CAS实现SSO单点登录原理

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  4. 微信公众号开发入门教程第一篇

    微信公众号开发入门教程第一篇 关键字:微信公众平台开发 作者:方倍工作室 在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/ ...

  5. Java并发编程之CAS第三篇-CAS的缺点

    Java并发编程之CAS第三篇-CAS的缺点 通过前两篇的文章介绍,我们知道了CAS是什么以及查看源码了解CAS原理.那么在多线程并发环境中,的缺点是什么呢?这篇文章我们就来讨论讨论 本篇是<凯 ...

  6. SSO单点登录原理剖析

    转载于:http://www.cnblogs.com/gxbk629/p/4473569.html CAS实现SSO单点登录原理 1.      CAS 简介 1.1.  What is CAS ? ...

  7. Electron系列教程——第一篇:入门

    Electron系列教程--第一篇:入门 一.楔子 想要学习Electron,跟着官网或者中文网,仔细阅读,并实践,其实是够了,不必要重复.那为什么还要写这个系列呢?大概有两方面原因,其一:我使用el ...

  8. 10.单点登录原理及JWT实现

    单点登录原理及JWT实现 一.单点登录效果   首先我们看通过一个具体的案例来加深对单点登录的理解.案例地址:https://gitee.com/xuxueli0323/xxl-sso?_from=g ...

  9. CSA实现单点登录原理详解 ,如何判断访问不同域名时用户是否登录

    原理图 www.cas.client.com为cas客户端,也就是用户要访问的资源所在,www.cas.server.com为cas服务端,是单点登录的认证中心. 图中各步骤拆解说明: ①:首先用户访 ...

最新文章

  1. 识骨寻踪:少年,我看你骨骼清奇,不如来看看这本书。
  2. xnawindowsph日本 Phone x Phone iphone 4 座机 复古电话手机座 听筒 防辐射
  3. LPCTSTR 与 int 的互相转换
  4. UML统一建模语言知识体系概述
  5. 签约中国搜索,第四范式助力智慧媒体转型发展
  6. Linux中的ftp命令怎么写,linux下使用ftp命令
  7. java getselecteditem_Java JComboBox.getSelectedItem方法代碼示例
  8. 5G精华问答 | 5G是否会“逼退”4G?
  9. c语言怎么判别输入字母大小,使用C语言判断英文字符大小写的方法
  10. Eclipse中如何更改字体大小?
  11. python异步回调函数的实现
  12. 输入字符_你会输入带圈字符吗?
  13. 计算机信息管理系统实训摘要,计算机实训报告摘要.doc
  14. 解决git未指定冲突处理方法的问题 - hint: Pulling without specifying how to reconcile divergent branches ishint: di
  15. 通达信最新 行情服务器,【图】我是如何打造普通行情比l2还快速的通达信行情服务器_股票公式,股票软件,股票论坛,炒股公式,股票_股票软件技术交流论坛_理想论坛 - 股票论坛...
  16. php redis 实时聊天,php+redis聊天室
  17. XML Notepad 2007 汉化版发布
  18. IIS不能启动的原因
  19. Gmail上不去怎么办?
  20. Kernel那些事儿之内存管理(6) --- 衣带渐宽终不悔(下)

热门文章

  1. 十八、前端必学Bootstrap美化(上篇)
  2. keras从入门到放弃(二)多项回归
  3. 微信小程序获取用户手机号--官方示例
  4. WWW 2022 | 弯道超车:基于纯MLP架构的序列推荐模型
  5. 今日arXiv精选 | 13 篇 ICCV 2021 最新论文
  6. 殊途同归的策略梯度与零阶优化
  7. ICML 2020 | 基于类别描述的文本分类模型
  8. 综述:基于GAN的图像翻译模型盘点
  9. 推荐系统阅读清单:最近我们在读哪些论文?
  10. web第一节2020.5.11