sso cas4.0改造历程--初识篇
来源:互联网 发布:最靠谱的网络兼职 编辑:程序博客网 时间:2024/06/04 18:57
前言:
随着用户量的增加以及各种需求的调整,cas的功能免不了需要做各种各样的改造。
简单的:页面维护,样式修改,docker的分环境打包、登陆流程的添加(加个用户信息记录或者添加验证码)。
复杂些的:分布式部署的实现、https改造与多客户端联调。
针对做过的这些改造,下面分篇来讲一讲自己的收获,分享一下遇到的坑以及解决方案。有不对的希望能帮忙指正,希望能给以后处理的人少挖些坑吧。
资源:
CAS( Central Authentication Service)是耶鲁大学的开源项目,旨在实现企业应用单点登录。
其官网 :https://www.ap ereo.org/
基本概念:
TGC (Ticket-granting cookie)
存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用,并且只能基于安全通道传输(Https),是CAS Server用来明确用户身份的凭证。
TGT(Ticket Grangting Ticket)
TGT是CAS为用户签发的登录票据,拥有了TGT,用户就可以证明自己在CAS成功登录过。TGT封装了Cookie值以及此Cookie值对应的用户信息。用户在CAS认证成功后,CAS生成cookie(叫TGC),写入浏览器,同时生成一个TGT对象,放入自己的缓存,TGT对象的ID就是cookie的值。当HTTP再次请求到来时,如果传过来的有CAS生成的cookie,则CAS以此cookie值为key查询缓存中有无TGT ,如果有的话,则说明用户之前登录过,如果没有,则用户需要重新登录。
ST(Service Ticket)
ST是CAS为用户签发的访问某一service的票据。用户访问service时,service发现用户没有ST,则要求用户去CAS获取ST。用户向CAS发出获取ST的请求,如果用户的请求中包含cookie,则CAS会以此cookie值为key查询缓存中有无TGT,如果存在TGT,则用此TGT签发一个ST,返回给用户。用户凭借ST去访问service,service拿ST去CAS验证,验证通过后,允许用户访问资源。
大体流程:
事实上当大家对spring-webflow有了解以后看,查看src\main\webapp\WEB-INF\login-webflow.xml,就可以自己把这个流程图画出来了。对应的登出流程就在src\main\webapp\WEB-INF\logout-webflow.xml下面。
需要注意一下几点:
关于流程
1、app端有session时,无需再次请求cas服务端(实线部分的流程即可)。
2、app端有st,则直接校验即可(无须重定向到cas服务端获取st)。
3、只有当1、2都不满足,或者校验不通过时,才会唤起输入用户名和密码的页面。
4、cas是集成了spring-webflow的,而对应的信息又保存在cas_server端的session中。所以要分布式部署的话,不能忘了session的共享。
关于票据
1、TGC (Ticket-granting cookie),是存放在浏览器中的,从它是名字就能判断出来。
2、包含用户信息的session保存在app服务端和cas的服务端
3、TGT(Ticket-granting Ticket),ST(Service Ticket)存放在cas服务端中。要实现上图的分布式部署,将其存入共用的数据库即可。
0 0
- sso cas4.0改造历程--初识篇
- sso cas4.0改造历程--spring-webflow篇
- sso cas4.0改造历程--分布式部署实现
- 【SSO单点系列】(1):CAS4.0 环境的搭建
- 【SSO单点系列】(1):CAS4.0 环境的搭建
- 【SSO单点系列】(1):CAS4.0 环境的搭建
- SSO 单点登录 CAS4.0 环境的搭建
- 《SSO系列一》初识SSO
- 【SSO单点系列】(2):CAS4.0 登录页的个性化定制、登录页验证码的添加
- cas4.0服务端集群
- CAS4.0 开始中
- CAS4.0集成restlet手册
- CAS4.0之环境搭建
- CAS4.0关联mysql数据库
- CAS SSO改造步骤(1)
- CAS SSO改造步骤(2)
- CAS SSO改造步骤(3)
- CAS SSO改造步骤(1)
- LINUX设备驱动之设备模型一--kobject
- Java面试4
- 分组的listView滑动中固定组标题
- ctags使用详解
- Android 备注快捷使用方式
- sso cas4.0改造历程--初识篇
- 绝对干货-国内值得关注的官方API集合,很全很强大(必须收藏)
- Java Caching(缓存)-策略和JCache API
- Ubuntu 16.04 + ROS Kinetic 机器人操作系统学习镜像分享与使用安装说明
- scrapy动态设置user agent,使用IP地址池,禁用cookies,设置下载延迟.
- leetcode 476 Number Complement
- J
- ThreadLocal详解
- 在Mac安装cmake command line tool