锁定老帖子 主题:【原创】CAS总结之集群环境篇
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-08
最后修改:2010-01-26
CAS的集群环境,包括CAS的客户应用是集群环境,以及CAS服务本身是集群环境这两种情况。在集群环境下使用CAS,要解决两个问题,一是单点退出时,CAS如何将退出请求正确转发到用户session所在的具体客户应用服务器,而不是转发到其他集群服务器上,二是解决CAS服务端集群环境下各种Ticket信息的共享。下面依次讨论在这两种集群环境下,CAS的使用情况。
集群配置:几台Apache服务器+几台Resin服务器
1:正常登录
登录流程
正常登录过程,如上图所示。CAS客户应用和CAS服务之间是redirect,CAS将请求redirect回客户应用时,浏览器会把客户应用的sessionid(以cookie的形式)顺便带给客户应用,客户应用的集群环境,会根据sessionid,将用户请求始终转发到某一台具体的服务器上。正常登录过程是没有问题的。
2:用户正在访问的客户应用服务器宕掉
3:单点退出 在退出的时候,客户应用负责redirect到CAS的logout接口,logout接口首先将服务端的TGT对象失效掉,然后遍历TGT对象的services属性(HashMap<String,Service>类型),对于每个Service对象,调用其logOutOfService方法,在此方法中,通过HttpURLConnection访问Service的originUrl属性标识的URL,客户应用端的SingleSignOutFilter截获此请求,将本地的session失效掉,从而达到单点登录的效果。
String jsessionid = "jsessionid="+WebUtils.extranctJsessionIdFromUrl(url); connection.setRequestProperty("Cookie",jsessionid);
这样,客户应用接收到此请求时,会得到sessionid值,然后根据sessionid值,将请求转发到正确的服务器上。这样,就解决了集群问题。
二 CAS服务本身是集群环境
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-01-17
你用的cas是什么版本啊
|
|
返回顶楼 | |
发表时间:2010-01-18
我用的是3.3版本
|
|
返回顶楼 | |
发表时间:2010-01-19
我也是在client是集群环境下时,单点退出不起作用的情况,能不能将这块的修改详细说明一下,我的邮箱是zhenyu82.he@gmail.com
|
|
返回顶楼 | |
发表时间:2010-01-24
通过配置jboss也能实现,不需要更改源代码。
|
|
返回顶楼 | |
发表时间:2010-01-26
kscn_com 写道 通过配置jboss也能实现,不需要更改源代码。 能否提供一下配置说明,让我也学习学习,谢谢啊。 |
|
返回顶楼 | |
发表时间:2010-10-19
请问在cas_server的集群这块,你做了吗?
|
|
返回顶楼 | |
浏览 7679 次