无法使用 3 个客户端应用程序在 CAS 中执行单点注销 (SLO)。 (Spring 安全 4.2.1.RELEASE + SSO CAS - jasig 4.0.3)
Unable to do Single LogOut (SLO) in CAS with 3 client applications. (Spring Security 4.2.1.RELEASE + SSO CAS - jasig 4.0.3)
我在三个应用程序中使用 CAS,当我尝试从其中一个应用程序注销时,CAS 终止了该应用程序的会话,但该会话仍在其他应用程序中。我如何终止所有会话?
- 中科院
- 应用程序 A
- 申请 B
- 应用程序 C
从应用程序 A 注销,仍然登录到应用程序 B 和 C。
我无法获取所有 cookie,只能从注销方法所在的应用程序中获取。
任何人都可以在这方面提供帮助吗?
这里的基础是注销本地应用程序会话,然后调用 cas 注销服务。我想这就是您的应用程序注销控制器的样子
public ModelAndView logout(HttpServletRequest request) {
SecurityContextHolder.clearContext();
request.getSession(false).invalidate();
return new ModelAndView("redirect:/logout/cas");
}
当您重定向到 /logout/cas 时,spring-security.xml 中的以下条目将处理单点注销。
<!-- This filter handles a Single Logout Request from the CAS Server -->
<bean id="singleLogoutFilter" class="org.jasig.cas.client.session.SingleSignOutFilter">
<property name="artifactParameterName" value="SAMLart"></property>
</bean>
<!-- This filter redirects to the CAS Server to signal Single Logout should be performed -->
<bean id="requestSingleLogoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter">
<constructor-arg value="https://${cas.server.name}/cas/logout" />
<constructor-arg>
<bean class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler" />
</constructor-arg>
<property name="filterProcessesUrl" value="/logout/cas" />
</bean>
关注 link 应该会有帮助,CAS Single Logout。请注意,此 link 适用于 CAS 版本 4.2.x。
我在三个应用程序中使用 CAS,当我尝试从其中一个应用程序注销时,CAS 终止了该应用程序的会话,但该会话仍在其他应用程序中。我如何终止所有会话?
- 中科院
- 应用程序 A
- 申请 B
- 应用程序 C
从应用程序 A 注销,仍然登录到应用程序 B 和 C。
我无法获取所有 cookie,只能从注销方法所在的应用程序中获取。
任何人都可以在这方面提供帮助吗?
这里的基础是注销本地应用程序会话,然后调用 cas 注销服务。我想这就是您的应用程序注销控制器的样子
public ModelAndView logout(HttpServletRequest request) {
SecurityContextHolder.clearContext();
request.getSession(false).invalidate();
return new ModelAndView("redirect:/logout/cas");
}
当您重定向到 /logout/cas 时,spring-security.xml 中的以下条目将处理单点注销。
<!-- This filter handles a Single Logout Request from the CAS Server -->
<bean id="singleLogoutFilter" class="org.jasig.cas.client.session.SingleSignOutFilter">
<property name="artifactParameterName" value="SAMLart"></property>
</bean>
<!-- This filter redirects to the CAS Server to signal Single Logout should be performed -->
<bean id="requestSingleLogoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter">
<constructor-arg value="https://${cas.server.name}/cas/logout" />
<constructor-arg>
<bean class="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler" />
</constructor-arg>
<property name="filterProcessesUrl" value="/logout/cas" />
</bean>
关注 link 应该会有帮助,CAS Single Logout。请注意,此 link 适用于 CAS 版本 4.2.x。