共计 1652 个字符,预计需要花费 5 分钟才能阅读完成。
CAS 是 Central Authentiction Service 的缩写, 地方认证服务, 一种独立凋谢指令协定.CAS 是 Yale 大学发动的开源我的项目. 旨在为 Web 利用零碎提供一种牢靠的单点登录办法,CAS 在 2004 年 12 月正式称为 JA-SIG 的一个我的项目.
特点:
1. 开源的企业级单点登录解决方案.
2.CAS Service 为须要独立部署的 Web 利用.
3.CAS Client 反对十分多的客户端 (这里指单点登录零碎中的各个 Web 利用), 包含 Java .NET PHP 等
首次登录验证,其原理如下图所示:
1、第一次跳转:客户端拜访利用零碎,利用零碎判断 Session 发现为定路,返回 302 跳转到 sso 登录页面,并传递 service 参数给 sso,该 service 参数有两个作用:
2、service 个别传递利用零碎 url 地址,用于 sso 认证通过后回跳到利用零碎;
3、service 参数同时会被 cas 服务端的作为 cas 客户端的惟一标记记录下来,用于前期匹配相应的认证凭据;
4、第二次跳转:浏览器显示登录页面,用户输出账号密码登录胜利后,sso 会返回 302 跳转回到原来申请的利用零碎页面,并携带 ticket 参数,作为认证票据,同时通过 Set-Cookie 向浏览器记录 TGT,(TGT 的作用将在下一个利用零碎须要登录的时候体现进去,是防止反复登录的要害)
5、一次后盾验证:利用零碎接管到带有 ticket 的申请后,向从后盾间接向 sso 服务器发动一个 http 申请,将 service 和 ticket 作为参数,用于验证 ticket 的有效性;如果 ticket 无效,sso 服务器将返回该 ticket 对应的登录用户名。
已实现登录验证切换到其余零碎时,其原理如下图所示:
1、当用户曾经登录过一个利用零碎当前,在同一个浏览器上拜访第二个利用零碎,依据单点登录的要求此时不应该再登录,而是间接进入第二个零碎。然而实际上还是须要通过两次前端跳转、一次后端验证,只不过此时的两次跳转是间断的,两头不会再呈现登陆页面,用户感触不到。判断的根据就是后面第 4 步通过 Set-Cookie 保留到客户端的 TGT(Ticket Granted Cookie)。
2、相比首次拜访,少了之前的第 3 步 (不须要再呈现登录页面),因为此时在第二步跳转时,携带了之前保留的 TGT,cas 服务端通过 TGT 能够得悉用户信息,因而间接生成 ticket 返回给利用零碎。所以此时是两次间断的 302 跳转,用户看到的成果就是间接进入第二个利用零碎了。
CAS 源码解析 -cas 相干的 jar 包
CAS 源码 -cas 配置文件
1、spring-configuration 是 spring 相干的外围配置,蕴含读取配置文件办法、springbean 注册配置、ticket 票据配置、Cookie 配置等。
2、view 页面目录:蕴含 jsp、js、css 等。
3、cas.properties 文件:cas 服务的配置文件,能够寄存数据库配置、redis 配置等。
4、deployerConfigContext.xml:用于连贯数据库的配置。
1、零碎接管到申请首先通过 web.xml,通过 web.xml 中 SafeDispatcherServlet 进行映射找到 cas-servlet.xml.2、cas-servlet.xml 中次要蕴含了两种管制层映射形式。handlerMappingC 和 FlowHandlerMaping。依据两种不同的映射形式找到对应的服务。
3、以退出登陆为例 /logout,通过 springbean 关系能够找到退出的登陆页面。退出胜利后进入 /login 登陆页面。
4、/login 采纳了 FlowHandlerMaping 形式,通过 login-webflow.xml 文件能够看到 cas 登陆的整个过程。on-start(start-state)流程开始,end-state 流程完结 decision-state 判断,相似于 if,view-state 对应 jsp 页面 action-state 对应执行程序的某段。