关闭

Cas单点登录学习笔记

标签: ssocas
287人阅读 评论(8) 收藏 举报
分类:

Cas可以说是集成很好,应用很广,尤其在各个权限系统中,几乎是不可以或缺的一部分,因此,这片博客来记录学习Cas单点登录。


单点登录:


定义:

单点登录的英文名称为SingleSign-On,简写为SSO,它是一个用户认证的过程,SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。


IBMSSO有一个形象的解释“单点登录、全网漫游”。


优点:



SSO将一个企业内部所有域中的用户登录和用户帐号管理集中到一起,SSO的好处显而易见:

l  减少用户在不同系统中登录耗费的时间,减少用户登录出错的可能性

l  实现安全的同时避免了处理和保存多套系统用户的认证信息

l  减少了系统管理员增加、删除用户和修改用户权限的时间

l  增加了安全性:系统管理员有了更好的方法管理用户,包括可以通过直接禁止和删除用户来取消该用户对所有系统资源的访问权限



实现机制:


单点登陆的技术实现机制


用户第一次访问系统的时候,被引导到认证系统中进行登录,根据登录信息,认证系统进行身份校验,如果通过校验,返回给用户一个认证的凭据(ticket),用户再访问别的应用的时候,就会将ticket带上,作为自己认证的凭据,应用系统接受到请求后,会把这个ticket送到认证系统进行校验,检查ticket的合法性,如果通过校验,用户就可以不用再次登录访问其他应用系统了。




Cookie实现机制


SSO的实现机制不尽相同,大体分为Cookie机制和Session机制两大类。

由于后面我们讲的开源产品CAS采用的就是Cookie机制,所以在这里重点讲Cookie的实现机制。

如图所示,表示的是用Cookie机制实现的流程:



Cas简介


Cas定义:


CAS(Central Authentication Service)是 Yale 大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(属于Web SSO)。


CAS 开始于 2001 年, 并在2004 年 12 月正式成为 JA-SIG 的一个项目。


特点:


l  开源的企业级单点登录解决方案

l  CAS Server为需要独立部署的Web应用

l  CAS Cllient支持非常多的客户端(这里指单点登录系统中的各个Web应用),包括Java,.Net,PHP,Perl,Apache,uPortal,Ruby等。


结构体系:


从结构体系看,CAS包括两部分:CASServerCAS Client


CAS Server


负责完成对用户的认证工作,需要独立部署,CAS Server会处理用户名/密码等凭证(Credentials)。


CASClient


负责处理对客户端受保护资源的访问请求,需要对请求方进行身份认证时,重定向到CAS Server进行认证。(原则上,客户端应用不再接受任何的用户名密码等Credentials


CASClient与受保护的客户端应用部署到一起,以Filter方式保护受保护的资源。



原理及协议过程


Cas基础协议:



CAS 请求认证的时序图:



对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service所在地址,并为客户端浏览器设置一个 Ticket Granted CookieTGC),CAS Client 在拿到Service 和新产生的 Ticket 过后,在第 56 步中与 CAS Server 进行身份合适,以确保 Service Ticket 的合法性。


在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。


另外,CAS 协议中还提供了 Proxy (代理)模式,以适应更加高级、复杂的应用场景。







1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:294440次
    • 积分:11930
    • 等级:
    • 排名:第1229名
    • 原创:184篇
    • 转载:1篇
    • 译文:0篇
    • 评论:3299条
    博客专栏
    最新评论