单点登录系统和CAS的简介
---恢复内容开始---
什么是单点登录?
单点登录(Single Sign On),简称为SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.
如果我们的系统存在于诸多的子系统中,而这些子系统是分别部署在不同的服务器中,那么使用传统方式的session是无法解决的,我们需要使用相关的单点登录技术来解决.
通过这张图就可以简单的对单点登录有一定的了解:
1.用户第一次访问应用系统的时候,因为还没有登录,就会被引导到认证系统中进行登录.
2.根据用户提供的登录信息,认证系统进行身份校验,如果通过校验应该返回给用户一个认证的凭据--ticket
3.用户再访问别的应用的时候,就会将这个ticket带上,作为自己的凭据,应用系统接收到请求之后,就会把ticket送到认证系统进行校验,检查ticket的合法性.如果通过校验,用户就可以在不用再次登录的情况下访问应用系统2和3了.
要实现SSO,需要一下主要的功能:
所有应用系统共享一个身份认证系统.\
统一的认证系统是SSO的前提之一,认证系统的主要功能是将用户的登录信息和用户信息库相比较,对用户进行登录认证,认证成功后,认证系统应该生成统一的认证标志(ticket),返还给用户,另外,认证系统还应该对ticket进行校验,判断其有效性.
` 所有应用系统能过识别和提取ticket的信息.
要实现SSO的功能,让用户只登录一次,就必须让应用系统能够识别已经登录过的用户,应用系统应该能对ticket进行识别和提取,通过与认证系统的通讯,能自动判断当前用户是否登陆过,从而完成单点登录的功能.
优点:
1.提高用户的效率
用户不再被多次登录困扰,也不需要记住多个ID密码,另外,用户忘记密码并求助于支持人员的情况也会减少.
2.提高开发人员的效率
SSO为开发人员提供了一个通用的身份证验证框架.实际上,如果SSO机制是独立的,那么开发人员就完全不需要为身份验证进行操心,他们可以假设,只要对应用程序的请求附带一个用户名,身份验证就已经完成了.
3.简化管理
如果应用程序加入了单点登录协议,管理用户账号的负担就会减轻,简化的程度取决于应用程序,因为SSO只处理身份验证.所以,应用程序可能仍然需要设置用户的属性(比如访问特权).
缺点:
1.不利于重构,
因为涉及到的系统会很多,要重构必须要兼容所有的系统,可能很耗时.
2.无人看守桌面
因为只需要登录一次,所有的授权的应用系统都可以访问,可能导致一些很重要的信息泄露.
CAS(中央认证服务)
CAS是Central Authentiction Service 的缩写,中央认证服务,一种独立开放指令协议.CAS是Yale大学发起的开源项目.旨在为Web应用系统提供一种可靠的单点登录方法,CAS在2004年12月正式称为JA-SIG的一个项目.
特点:
1.开源的企业级单点登录解决方案.
2.CAS Service为需要独立部署的Web应用.
3.CAS Client 支持非常多的客户端(这里指单点登录系统中的各个Web应用),包括Java .NET PHP Apache uPortal Ruby等
CAS的原理:
从结构上看,CAS包含两部分:CAS Server和CAS Client.CAS Server需要独立部署,主要负责对用户的认证工作;CAS Client负责处理对客户端受保护资源的访问请求,需要登录时,重定向到CAS Server.这个是CAS最基本的协议过程:
CAS Client与受保护的客户端应用部署在一起,以Filter方式保护受保护的资源,对于访问受保护的资源的每个Web请求,CAS Client会分析该请求的Http请求中是否包含Server ticket,如果没有,则说名当前用户尚未登录,于是将请求重定向到指定好的CAS Server登录地址,并传递Service(也就是要访问的目的资源地址),以便登录成功后转回该地址.用户在第三步中输入认证信息,如果登录成功,CAS Server随机产生一个相当长度,唯一,不可伪造的Service Ticket,并缓存以待将来验证,之后系统自动重定向到Service所在地址,并为客户端浏览器设置一个Ticket Granted Cookie(TGC),CAS Client在拿到Service和新产生的Ticket过后,在第五六步中与CAS Server进行身份核实,以确保Service Ticket的合法性.
在该协议中,所有与CAS的交互均采用SSL协议,确保,ST和TGC的安全性,协议工作过程中会有两次重定向的过程,但是CAS Client 与CAS Server之间进行Ticket验证的过程对于用户是透明的.
另外,CAS 协议中还提供了Poxy(代理)模式,以适应更加高级,复杂的应用场景.更加详细的介绍可以参考官网上的相关文档.
---恢复内容结束---
本文来自博客园,作者:King-DA,转载请注明原文链接:https://www.cnblogs.com/qingmuchuanqi48/p/10784667.html