说在前面
最近刚刚接过来公司的单点登录,发现网上对单点登录的介绍还是蛮多了,不论是使用webflow的传统方式交互,还是使用流行的restful接口方式认证,但是对登出的介绍却不多,而且内容大多雷同,所有打算将单点登出在这里记录一下,也希望有不当的地方帮指出,共同进步
一、概念
CAS认证服务器支持了单点登出(Single Logout),单点登出意味着用户不仅从cas服务器退出,也从所有访问过cas客户端应用中退出,当用户发出登出请求时,CAS服务器将向session中存在的所有 service url 发送包含一个xml退出文档的请求,使TGT失效,如果不想使用CAS单点登出,可以忽略掉CAS服务器发出的登出请求。
请求路径/logout
销毁客户端单点登录的session,同时销毁ticket-granting cookie(TGT),再次请求/login的时候不会再返回service tickets(ST),除非你重新登录。
下面具体说一下,当需要单点登出时,服务端和客户端分别做了什么:
服务端:服务端在向各应用系统发出单点登出请求时会忽略所有可能出现的错误,这样是为了确保在发送请求时不会被打算,这样可以使所有的cas client 应用接受到登出请求。
客户端:处理来自于CAS服务器的登出的POST请求,这些用户是通过service ticket(ST)与CAS client Applacation建立连接的。如果该应用支持单点登出,它将会返回HTTP请求成功的状态吗给CAS server。
登出的内容大概就这些,说的不够细,代码中可能会更清楚一些,如果最近不加班的话,我会把代码贴出。