CAS项目差不多要告一段落了,这里总结一下CAS登录流程,配置这里就不讲了,配置网上一大推的教程。如果是小白的话,这里建议使用CAS5.3以下的版本,我开始使用的就是CAS5.3,遇到了一大堆的问题,后来改用CAS5.2之后就没有问题了。
先看一下CAS百度百科的资料:
![55d16b08909a5dfdaff8d93ff05ffc36.png](https://i-blog.csdnimg.cn/blog_migrate/9e75149bc6c0047e7632ec5410dd9aba.jpeg)
![1f1d74ca29a03f82ebdc81b5134b6362.png](https://i-blog.csdnimg.cn/blog_migrate/256cbdea80af56ff2e463f0cd7f7099d.jpeg)
![35cad1b91b23f1655c39dd2817a1194a.png](https://i-blog.csdnimg.cn/blog_migrate/8d9dbda32731cf2e3b7772d4f2a2ec40.png)
这里我们可以看到CAS登录分为六部:
step1 访问服务:浏览器发送请求访问应用系统提供的服务资源
step2 定向认证:SSO客户端会重定向用户请求到SSO服务器
step3 用户认证:用户身份认证(这里是双向的,SSO返回登录界面给浏览器,浏览器提交用户表单给SSO服务器。认证通过之后,会生成TGC,TGC会保存到本地的cookie中,cookie中包含TGT,还会生成SSO Session,这个TGT就是SSO Session的秘钥。)
step4 发放票据:SSO服务器会产生一个随机的server ticket(这个ticket也会缓存在本地的cookie中,SSO客户端访问SSO服务端会先判断是否有server ticket,如果不存在就需要用TGT去申请一张server ticket,如果存在就可以访问资源了)
step5 验证票据:SSO服务器验证票据service ticket的合法性,验证通过后允许客户端访问(验证通过之后会生成session,生成session的目的是不用每次都做票据验证的操作,如果这次来验证的ticket已经存在于session中,就SSO服务器就不需要再做验证了)
step6 传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端(返回的用户信息是一个xml文件)
<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
<cas:authenticationSuccess>
<cas:user>AAAA</cas:user>
</cas:authenticationSuccess>
</cas:serviceResponse>
如果需要查看详细的SSO登录流程,可以访问官网:
CAS - CAS Protocolapereo.github.io![32c15fcbde9715ecba1ec32622073149.png](https://i-blog.csdnimg.cn/blog_migrate/621e05dd96a9c8067d09e8995057784f.jpeg)
这里我直接把访问流程图贴出来。
![e0d72319306e885c9fe614c1bad15df0.png](https://i-blog.csdnimg.cn/blog_migrate/aaa41c90e001a59a1f71d96b4ad9338d.jpeg)
这里有一篇博客也讲的比较清楚:
CAS客户端认证流程 - 你要 - 博客园www.cnblogs.com![853ddf8d7b88ab6dd8d9ab2a806e25aa.png](https://i-blog.csdnimg.cn/blog_migrate/38ca700facc218d8131e29e84cb23e01.png)
这篇博客中,关于生产TGT这一段,我本人是不太赞同的
![5b7f766ca7d32245f934490d2df13ec2.png](https://i-blog.csdnimg.cn/blog_migrate/1454b4957b7d4fcf3e65fd638961077e.jpeg)
根据官网的流程图可以看出,生产TGT应该是在认证通过之后生成。