最近我们部门交接了一个新项目--- passport,即我司的单点登录系统,虽然没有交接给我,但是个人觉得登录技术是个很好的知识,于是就忙里偷闲简单地学习了下。

  单点登录SSO(single sign on)是一个当前流行的企业级多应用整合用户认证解决方案。从多个web应用中分离出登录、认证操作,进行同意管理,这样个web应用也不需要重复设计登录认证操作,专注各自的业务。

     目前最应用最多的SSO实现方案是耶鲁(Yale)大学发起的一个开源项目----CAS(Central Authenticaion Service 中央认证服务),
     CAS包含两部分:CAS Server 和 CAS Client
     CAS Server :CAS服务器端集中进行用户的登录认证,需要独立部署;
     CAS Client :CAS客户端主要过滤应用的请求,以filter的方式保护受保护请求,它需要和应用部署在一起;
 
CAS的基础模式
                  
                     
  1. user请求应用1(以下简称aap1),CAS Client过滤此请求,如果是受保护请求,则分析此请求是否含有ST(Service Ticket,表明当前user的当前请求是否经过CAS Server认证)或者app1中的session(有用户信息表明当前用户通过此应用在CAS Server认证过,无须再去CAS Server认证)里是否含有当前用户信息;
  2. 1中发现没有ST或者session,则重定向user请求到CAS Server,CAS Server 从user中获取TGC(Ticket Granted Cookie,表明当前user在CAS Server登录认证过,无须用户登录,这也体现了单点登录的需求),如果没有TGC或者TGC失效,则返回user登录页面,让用户登录认证;
  3. 用户输入账号、密码,在CAS Server进行认证,如果登录成功,CAS Server生成一个唯一的,不可伪造的长度相当的ST;
  4. CAS Server重定向user请求到CAS Client,附带上刚才生成的ST;
  5. CAS Client向CAS Server发起校验请求,校验收到的ST的有效性;
  6. ST验证有效,在app1上创建session,来标识用户已登录;
  7. 现在,登录认证全部完成,重定向user到服务情求地址。
 
CAS的代理模式
                      
 
  CAS代理模式试用场景:用户向app1发出请求,但是app1依赖app2(假设app1和2均需要认证),为了提升交互效果,避免过多的重定向,CAS引入代理机制,由CAS Client代理user访问app2,
     类似于基础模式中usr保存TGC,代理模式中,CAS Client也需要存储用户的身份信息,这就是PGT(Proxy Gtanted Ticket),CAS Server获取CAS Client中PGT的用户身份信息,确认身份后返回PT(Proxy Ticket)给代理程序CAS Client。
     一句话来说,PGT和TGC类似,PT和ST类似,区别就是,PGT保存在CAS Client,而TGC保存在user。
 
  CAS的的安全性设计
       1. TGC\PGT是用来确认用户是否需要登录的,所以,安全性不言而喻,CAS Server使用SSL发送 TGC\PGT到user\CAS Client;
       2. ST\PT:只能使用一次,使用后即作废、只在一段时间内有效(默认5分钟)、随机数(一定不能让人猜出规则);
 
 

单点登录实现----CAS(一)的更多相关文章

  1. 单点登录系统CAS筹建及取得更多用户信息的实现

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  2. java单点登录系统CAS的简单使用

    转:http://blog.csdn.net/yunye114105/article/details/7997041 背景 有几个相对独立的java的web应用系统, 各自有自己的登陆验证功能,用户在 ...

  3. CAS单点登录(一):单点登录与CAS理论介绍

    一.什么是单点登录(SSO) 单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录. 单点登录(Single Sign On),简称 ...

  4. asp.net项目与开源单点登录项目CAS的结合

    这段时间搞的一个asp.net mvc项目,采用了单点登录. 这个单点登录就是CAS,一个开源的JAVA项目.当然,这并不影响ASP.NET项目结合它来进行登录.因为各自分工不同:单点登录(管它是不是 ...

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

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

  6. SSO单点登录Spring-Security & CAS使用手册

    1.1概述 1.1.1单点登录介绍 单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可 ...

  7. 单点登录之CAS SSO从入门到精通(第三天)

    开场白 各位新年好,上海的新年好冷,冷到我手发抖. 做好准备全身心投入到新的学习和工作中去了吗?因为今天开始的教程很"变态"啊,我们要完成下面几件事: 自定义CAS SSO登录界面 ...

  8. 开源单点登录系统CAS入门

    一.什么是CAS CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目.CAS 具有以 ...

  9. 【Tech】单点登录系统CAS客户端demo

    服务器端配置请参考: http://www.cnblogs.com/sunshineatnoon/p/4064632.html 工具:myeclipse或者javaee-eclipse 1.启动jav ...

随机推荐

  1. apache中虚拟主机的配置

    一.两种方式:基于域名的虚拟主机和基于IP地址的的虚拟主机 (这里基于前者) 二.作用:实现在同一个web服务器下,同时运行很多个站点(项目) 三.虚拟主机的配置 1.在核心配置文件中加载虚拟主机配置 ...

  2. Informatica Lookup Transformation组件的Connect 与Unconnected类型用法

    Informatica Lookup Transformation组件的Connect 与Unconnected类型用法及区别:下面是通一个Lookup在不同Mapping中的使用: 1. Conne ...

  3. Oracle存储过程例子:运用了正则表达式、数组等

    代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-- ...

  4. jQuery--事件总结

    标准的绑定: bind(type,[,data],fn)==>第一个参数是事件类型 第二个可选参数作为event.data 传递给事件对象的额外数据对象 第三个参数为用来绑定的处理函数 简写绑定 ...

  5. 使用NSJSONSerialization将数组或字典转为字符串

    IOS中将数组或字典转为字符串可以用NSJSONSerialization,代码如下: NSData* data = [NSJSONSerialization dataWithJSONObject:a ...

  6. Qt之Qwt学习之安装

    QWT+qtcreator 编译.安装使用 目录:一.Qwt简介 二.QWT编译 一.Qwt简介 QWT:Qt Widgets for Technical Applications,是开源的2D绘图库 ...

  7. Outlook不能预览和打开Excel文件:

    无法打开Outlook邮箱中的Excel附件,确实让人恼火 先不要着急: 1.在开始->运行,输入"regedit" 2.找到路径:HKEY_CURRENT_USER\Sof ...

  8. poj2763

    //Accepted 11676 KB 2344 ms /* source:poj2763 time :2015.5.29 by :songt */ /*题解: 树链剖分 基于边权,路径查询 wind ...

  9. 802.11MAC基础

    做无线网络测试已经大半年了,在这过程中发现<802.11权威指南>真是以本好书,在这里分享一下学习到的知识,也帮助我记忆. 1.MAC: mac(媒介访问控制层),它位于物理层之上,控制着 ...

  10. swift 构建类

    参开 http://blog.csdn.net/chelongfei/article/details/49784633 在 Swift 中, 类的初始化有两种方式, 分别是 Designated In ...