最近我们部门交接了一个新项目--- 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. linux下错误的捕获:errno和strerror的使用

    经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因.这个时候使用 ...

  2. Sql 常用时间转换

    CONVERT(varchar(100), GETDATE(), 0); -- 08 31 2015 04:57PM CONVERT(varchar(100), GETDATE(), 20); --2 ...

  3. Android Activity中获取当前焦点的控件,自动化输入EditText

    获取焦点的view对象 View view=getWindow().getDecorView().findFocus(); 如果是EditText if(view instanceof EditTex ...

  4. HighChats图表控件显示精度小数点的方法

    相信大家对highchats这个图表控件并不陌生,最近在项目中用到它,但是某些字段需要显示为小数点,顾查找资料文档发现下面两个方式可以实现: 初始化时候添加如下两个参数 tooltip:{    fo ...

  5. web前端基础篇⑩

    1.960栅格式布局法屏幕分辨率为1024*768.采用接 main宽为960px的布局方式12列式:每格60px 间距20px 3 6 3版 三格式布局(最常用)16列式:每格40px 间距20px ...

  6. Git进行代码管理的心得

    git从网上下载安装后 直接可在开始菜单中找到 打开可以看到一个类似命令窗口的东西 用代码进行用户名和邮箱的设置 虽然不知道为什么但是教程叫我这么做 (ˇˍˇ) 然后似乎就可以用了 进入文件夹 输入对 ...

  7. C语言程序设计第6堂作业

              一.  本次课主要内容:             通过几个实例来进一步掌握循环结构的应用. 二. 实验内容:(70分) 1. 穷举算法(古典算术问题-搬砖头)某地需要搬运砖块,已知 ...

  8. script标签里的defer属性

    入职新公司,看代码的时候注意到有的script标签中有一个defer属性,查了一下.在这里分享出来. 需要注意的有三点,其中前两点是在错误中分辨出来的: 错误来源:http://www.w3schoo ...

  9. 【杂】孔明锁6根解法 & 九连环的拆卸方法及还原

    **************************** Part1: 孔明锁6根解法: **************************** 第一步,编号: 第二步,按照编号组装: 第三步,完成 ...

  10. google你懂得

    地址 https://github.com/racaljk/hosts