单点登录实现----CAS(一)

  最近我们部门交接了一个新项目--- 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分钟)、随机数(一定不能让人猜出规则);

时间: 2024-08-10 23:30:52

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

Jeesite单点登录集成cas另加自定义登录验证

Jeesite单点登录集成Cas另加自定义登录验证 JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的 开源 Java EE快速开发平台. Cas主要是用来解决多应用之间统一登陆认证,无需用户在同一公司多应用之间重复登陆.例如阿里巴巴中淘宝.天猫,在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. Cas基础 服务端 服务端cas-server-webapp-4.0.0.war,服务器端程序一般不用我们完成,但需要做一点小小的修改,cas的服务

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

转:http://blog.csdn.net/yunye114105/article/details/7997041 背景 有几个相对独立的java的web应用系统, 各自有自己的登陆验证功能,用户在使用不同的系统的时候,需要登陆不同的系统.现在需要提供一个统一的登陆/登出界面, 而不修改各个系统原来的登陆验证机制.于是采用单点登录系统CAS. 使用步骤 要使用单点登录,需要部署CAS系统, CAS服务端可以直接部署在tomcat下运行, 对于CAS服务端来说,所有要集成单点登录的web应用都是

单点登录之CAS简单介绍

cas官网http://www.ja-sig.org/products/cas/. ok,现在开始本文的重点内容讲解,先来了解一下cas 实现single sign out的原理,如图所示: 图一 图二 第一张图演示了单点登陆的工作原理. 第二张图演示了单点登出的工作原理. 从第一张图中,当一个web浏览器登录到应用服务器时,应用服务器(application)会检测用户的session,如果没有session,则应用服务器会把url跳转到CASserver上,要求用户登录,用户登录成功后,CA

单点登录系统CAS入门

一.单点登录的概念 单点登录(Single Sign On),简称为SSO.SSO是定义在多个应用系统中,用户只需要登录一次就可以访问所有的相互信任的应用系统. 当我们创建工程的子系统部署在不同的服务中的时候,使用传统的session是无法解决问题的,这时候我们就需要使用相关的单点登录技术来解决. 1.CAS概述 CAS是Yale大学的一个开源项目,旨在为web应用系统提供一种可靠的单点登录方法.CAS具有以下特点: 开源的企业级单点登录解决方案 CAS Server为需要独立部署的Web应用

开源单点登录系统CAS入门

1.开源单点登录系统CAS入门 1.1 什么是单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. 我们目前的系统存在诸多子系统,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决. 1.2 什么是CAS CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种

Mvc4单点登录之三Cas 客户端配置

上一篇博客讲解了cas服务端的配置,这篇博客为大家讲一下cas 客户端的配置! 第一步建项目 自己新建一个mvc的项目.如图所示! 第二步添引用 将上一篇博客开头中让下载的文件,下载下来后,将dotnet-client-1.0.2-bin 文件中的 DotNetCasClient.dll文件复制到bin文件夹下,并添加DotNetCasClient.dll的引用. 第三步添视图 在Controller中 新建一个controller命名为HomeController,然后为里边的index添加一

Mvc4单点登录之一Cas简单介绍

背景 前几天写过一篇博客Net单点登录详解 (SSO),但是在这篇博客中是在asp.net 下做的实验,没有什么问题,但是转换到mvc中之后,问题就接二连三的出,后来没有办法,想想还是用人家已经写好的吧,别用那些自己写的东西了,一是不稳定,二是有很多的缺陷!然后就开始寻找!最后决定用cas来做! SSO介绍 SSO英文全称SingleSign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. CAS = CentralAuthentication S

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

开场白 各位新年好,上海的新年好冷,冷到我手发抖. 做好准备全身心投入到新的学习和工作中去了吗?因为今天开始的教程很"变态"啊,我们要完成下面几件事: 自定义CAS SSO登录界面 在CAS SSO登录界面增加我们自定义的登录用元素 使用LDAP带出登录用户在LDAP内存储的更多的信息 实现CAS SSO支持多租户登录的功能 好,开始正文! 正文 上次我们说到了CAS SSO的一些基本用法如:连数据库怎么用,连LDAP怎么用,这次我们要来讲一个网上几乎没有人去过多涉及到的一个问题即:在

单点登录(cas)、缓存技术与负载均衡

针对电子商务网站的特点和性能要求,在Web服务器前端设置动态缓存服务器,作为Web服务器的前置机,实现动态内容的缓存,加快了响应用户访问的速度:通过一定的替换和更新策略保证用户访问到最新的内容,对提高Web服务器峰值负载下的运行能力,减少访问动态内容的延迟时间起到优化作用 网罗天下实施策略 总体网络架构图 Nginx代理RedisCluster Tomcat1Cluster Tomcat2Mysql MusterMysql SlaveFTP应用服务器集群MysqlDB 主从缓存服务器5Web 服