如何为 Pivotal Cloud Foundry 托管的 JSP/Servlet 应用程序从 SiteMinder 会话注销?
Posted
技术标签:
【中文标题】如何为 Pivotal Cloud Foundry 托管的 JSP/Servlet 应用程序从 SiteMinder 会话注销?【英文标题】:How to do a logout from SiteMinder session for a Pivotal Cloud Foundry hosted JSP/Servlet application? 【发布时间】:2021-03-29 07:33:58 【问题描述】:我有一个基于 JSP/Servlet 的应用程序在 Pivotal Cloud Foundary 上运行并使用 Siteminder 进行身份验证。
我们实现但当前不成功的注销包括
request.getSession().invalidate() 的清除 随后清除 cookiesn(request.getCookies 后将所有 cookie 的 MaxAge 设置为 0) 随后在新的弹出窗口中调用站点管理员提供的 /logout url 后跟 window.location 作为 PCF 注销以从 PCF 应用程序注销。通过上述步骤,注销不成功。但是,如果我执行 Shift+Cntrl+Del 并删除 cookie --> 则注销成功。 所以我想以编程方式使用 Servlet 和 JSP 实现相同的行为。
提前致谢!
【问题讨论】:
当您说“siteminder”时,您是如何与之整合的?您是否使用 Pivotal SSO 磁贴?还是本机 OpenID 连接?还是别的什么? @DanielMikusa 应用程序正在使用 Pivotal SSO 磁贴 【参考方案1】:使用 Pivotal SSO Tile,您需要执行两个步骤才能完成这项工作。
首先,您需要使用Layer7 SiteMinder Integration Guide 设置您的计划。
正如那里列出的那样......
单点登录支持服务提供商发起的身份验证流程和单点注销。
这是一个相当复杂的过程,并且对您的提供商而言非常具体。我可以在这里给你的唯一提示是完全像在文档中那样做。破坏东西很容易,因此完全按照所写内容为您提供成功的最佳机会。
一旦您制定了计划,第二部分将发送至create a service instance using the plan & bind that to your app。然后按照integrating your app 的说明进行操作。
需要特别注意的部分,即处理单次注销的部分是documented in the API here。
注销端点旨在供应用程序用于将用户从 UAA 会话中注销。如果用户也点击此端点,UAA 只会将用户从 UAA 会话中注销,并且如果配置为这样做,还可以使用 SAML 提供程序执行单点注销。
如果您按照文档创建服务计划,它将被配置为进行单次注销,因此您只需要确保在您的应用中注销用户后调用此端点。
有一个example of how you'd do this for Spring Boot apps here。
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException
UriComponents url = UriComponentsBuilder.fromHttpUrl(request.getRequestURL().toString())
.replacePath("")
.build();
UriComponents redirectUrl = UriComponentsBuilder.fromHttpUrl(ssoServiceUrl)
.path("/logout.do")
.queryParam("client_id", clientId)
.queryParam("redirect", url.toString())
.build();
response.sendRedirect(redirectUrl.toString());
为了解释,此代码在成功注销后得到invoked by Spring。此处的代码只是创建一个指向 /logout.do
端点的 URL 并向客户端发出重定向。这是上面文档链接中描述的内容。
【讨论】:
以上是关于如何为 Pivotal Cloud Foundry 托管的 JSP/Servlet 应用程序从 SiteMinder 会话注销?的主要内容,如果未能解决你的问题,请参考以下文章
在pivotal cloud foundry上申请账号和部署应用
在 Pivotal Cloud Foundry 上为 Spring Boot 应用程序外部化 Vault 令牌/后端配置
将Spring-boot Backbone应用程序部署到Pivotal Cloud Foundry中
Spring Boot 微服务在 Pivotal Cloud Foundry 平台上部署时无法通过 Kerberos 身份验证