shiro是一个权限管理框架,将安全认证相关的功能抽取出来组成,使用shiro就可以非常快速的完成认证、授权等功能的开发,降低系统成本。为了能够为多个系统提供统一认证入口,又使用了cas,而且二者都涉及到对session管理,所以需要集成。
cas基本协议过程:
基础模式的SSO访问流程步骤:
- 访问服务:客户端发送请求访问应用系统提供的服务资源。
- 定向认证:客户端重定向用户请求到中心认证服务器。
- 用户认证:用户进行身份认证
- 发放票据:服务器会产生一个随机的 Service Ticket 。
- 验证票据: SSO 服务器验证票据 Service Ticket 的合法性,验证通过后,允许客户端访问服务。
- 传输用户信息: SSO 服务器验证票据通过后,传输用户认证结果信息给客户端。
cas认证时序图
对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。用户在第 3 步中输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证,之后系统自动重定向到 Service所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份合适,以确保 Service Ticket 的合法性。
在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。Shiro CAS 认证流程
· 1 用户首次访问受保护 的资源;例如 http://casclient/security/view.do
· 2 由于未通过认证,Shiro首先把请求地址(http://casclient/security/view.do)缓存起来。
· 3然后跳转到 CAS服务器进行登录认证,在 CAS 服务端认证完成后需要返回到请求的 CAS 客户端,因此在请求时,必须在参数中添加返回地址 ( 在 Shiro 中名为 CAS Service)。 例如 http://casserver/login?service=http://casclient/shiro-cas
· 4由CAS服务器认证通过后,CAS 服务器为返回地址添加ticket。例如http://casclient/shiro-cas?ticket=ST-4-BWMEnXfpxfVD2jrkVaLl-cas
· 5接下来,Shiro会校验 ticket 是否有效。由于