java—如何从siteminder会话注销关键的CloudFoundry托管的jsp/servlet应用程序?

y53ybaqx  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(381)

我正在pivotal cloud foundary上运行一个基于jsp/servlet的应用程序,并使用siteminder进行身份验证。
我们实现了注销,但未成功
清除请求。getsession().invalidate()
然后清除cookiesn(request.getcookies,然后将所有cookies的最大值设置为0)
然后在新的弹出窗口中调用siteminder提供的/注销url
然后是window.location作为pcf logout从pcf应用程序注销。
通过以上步骤,注销不成功。但是,如果我执行shift+cntrl+del并删除cookies-->,则注销成功。因此,在编程上,我希望使用servlet和jsp实现相同的行为。
提前谢谢!

vyswwuz2

vyswwuz21#

使用关键的sso tile,您需要执行两个步骤来实现这一点。
首先,您需要使用layer7 siteminder集成指南来设置您的计划。
如上面所列。。。
单点登录支持服务提供商发起的身份验证流和单点注销。
这是一个相当复杂的过程,对您的提供商来说非常具体。我唯一能给你的建议就是做一些和文件中完全一样的事情。打破东西是很容易的,所以完全按照写的东西去做会给你最好的成功机会。
一旦你建立了计划,第二部分就是使用计划创建一个服务示例并将其绑定到你的应用程序。然后按照说明集成应用程序。
需要特别注意的部分,即处理单次注销的部分,在这里的api中有记录。
注销端点将由应用程序用于将用户注销uaa会话。如果用户也点击了这个端点,uaa只会将其从uaa会话中注销,如果配置为这样做,还可以使用saml提供程序执行单次注销。
如果您按照文档创建服务计划,它将被配置为执行单次注销,因此您只需确保在用户注销应用程序后调用此终结点。
这里有一个关于如何为spring boot应用程序执行此操作的示例。

@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());
    }

为了解释,这个代码在成功注销后由spring调用。这里的代码只是创建一个指向 /logout.do endpoint&向客户端发出重定向。这是上面文档链接中描述的内容。

相关问题