最近我们部门交接了一个新项目--- 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. UDPClient的用法

    UDP_Server: UdpClient receivingUdpClient = ); IPEndPoint RemoteIpEndPoint = ); try { byte[] sdata = ...

  2. hibernate的一种报错

    Exception in thread "main" java.lang.NoClassDefFoundError: javax/tools/StandardJavaFileMan ...

  3. Qt之C语言类型typedef a[]等

    01:typedef类型:给类型起别名,typedef int d[5];定义了一个类型即一个5个int类型的数据.所以d c;的长度是就是4 * 10:

  4. jQuery原生框架-----------------事件

    jQuery.extend({ // 绑定事件 addEvent: function( ele, type, fn ) { // ele不是DOM,type不是字符串,fn不是函数,打包打走 if( ...

  5. Python中为feedparser设置超时时间教程

    python有一个用于解析feed的模块:feedparser,feedparser解析各种feed是非常方便的,唯一比较恼火的是遇到一些badurl,经常会导致堵塞,因此需要为feedparser设 ...

  6. c# 水晶报表的设计(非常的基础)

    最近在公司实习,由于公司需要用到的一种叫做水晶报表的神奇的东东,老大就叫我们学习学习.怕自己以后忘了,也为了以后阅读方便,将其记录下来. 使用工具:vs2008 基本方法一.使用水晶报表的推模式 步骤 ...

  7. 服务器列表里找不到OracleOraDb10g_home1TNSListener

    先安装的ORACLE DB,后配置的数据库,TNSNAMES.ORA, LISTENER.ORA配置完毕,客户端连接不上TNS服务器,发现服务列表里没有OracleOraDb10g_home1TNSL ...

  8. Jqgrid学习API

    JQGrid是一个在jquery基础上做的一个表格控件,以ajax的方式和服务器端通信. JQGrid Demo 是一个在线的演示项目.在这里,可以知道jqgrid可以做什么事情. 下面是转自其他人b ...

  9. PyCharm 3.4.1注册码

    PyCharm 3.4下载地址:http://www.jetbrains.com/pycharm/download/index.html PyCharm 3.0 注册码 PyCharm3 序列号 Li ...

  10. Memcache所有方法及参数详解

    memcache函数所有的方法列表如下: 参考http://www.php.net/manual/zh/function.Memcache-add.php Memcache::add - 添加一个值, ...