在cas 2.0协议中,cas 终于支持单点登出了。至于单点登出的概念与意义,我想这个也无须作过多的解释。现在直接上干货,对于单点登出,只有两个配置,一个是拦截登出请求的filter,一个是消毁请求人对应session的listener:
<filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> </filter> ... <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ... <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener>
cas client在map中存放了cas server端传过来的session信息,所以登出的时候,需要消毁对应session,即从map中去掉session。这个配置是对于cas 2.0协议的,而对于SAML 1.1协议的单点登出的配置方式是:
<filter> <filter-name>CAS Single Sign Out Filter</filter-name> <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> <init-param> <param-name>artifactParameterName</param-name> <param-value>SAMLart</param-value> </init-param> </filter> ... <filter-mapping> <filter-name>CAS Single Sign Out Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ... <listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener>
注意这两个配置不同就是下面的配置多了参数配置,这个参数就是SAML1.1协议的参数标识;对于cas 2.0协议之所以没有配置,那是因为有默认值,默认值是ticket.而对于cas1.0协议是不支持单点登出的。另关于每种协议如何配置可能见 cas client入门之二 web.xml 配置
发表评论(对文章涉及的知识点还有疑问,可以在这里留言,老高看到后会及时回复的。)