CAS支持灵活登出方式,可以单独登出单个应用,也支持统一登出。
-
单个应用登出带上认证service
-
所有应用登出,直接请求/cas/logout
现A,B应用分别登陆CAS,获取ST。
登出A
https://cas.com:8443/cas/logout?service=https://a.com:8444/authorize
CAS会向A应用/authorize
发起登出消息(POST请求)
格式如下:
1
2
3
4
5
6
|
<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="LR-1-VM1PfgJD6VEDtCc4NnIWaVLqFs0PktY6Ej9" Version="2.0" IssueInstant="2017-07-20T10:45:39Z">
<saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
@NOT_USED@
</saml:NameID>
<samlp:SessionIndex>ST-2-HtrBiWrgRD9DFgL25GI9-passport.edu</samlp:SessionIndex>
</samlp:LogoutRequest>
|
A应用处理登出请求。
不带service A,B应用都会收到登出消息。
使用phpCAS处理登出栗子👇
phpCAS认证通过后,会设置PHPSESSID:ST-2-HtrBiWrgRD9DFgL25GI9-passport.edu
将对应session销毁即可
1
2
3
4
|
session_id('ST-2-HtrBiWrgRD9DFgL25GI9-passport.edu');
session_start();
session_unset();
session_destroy();
|
参考文章:
CAS 4.1.x 单点登出(退出登录)的原理解析