1

我正在尝试使用 PingFederate 进行 SLO。其中一个 SP 应用程序配置为使用无 cookie 会话。PingFederate 中的这个 SP 应用程序的注销 URL 设置为例如“http://site/logout.aspx”,但是当 SLO 进程被触发时,PingFederate 成功地将浏览器重定向到这个 URL,但是到一个完全不同的会话比第一次创建 SSO 时产生的那个。如何配置 PingFederate 以重新使用在 SSO 过程中创建的会话重定向到 SP 的注销页面?

编辑:对不起,我忘了提一些事情。实际上 IdP 和 SP 应用程序都是在 ASP.NET 中开发的,我所说的 cookieless 是指 SP 应用程序在其 web.config 文件中具有以下会话状态配置

    <sessionState mode="InProc" cookieless="UseUri" regenerateExpiredSessionId="true" timeout="60" stateNetworkTimeout="30" />

此 sessionState 配置使 url 看起来像“http://site(S(pvvofbemnrmaixo2emaaeo0t))/Home.aspx”,这对于 SSO 来说是可以的,因为当调用“http://site/Home.aspx”时,a新会话被创建,因此将 url 替换为包含“(S(blahblah))”,但是,当 SLO 进程调用 SP 的注销 url (http://site/logout.aspx) 时,为生成 SP 站点(不同于最初由 SSO 创建的站点)。因此,原始 SP 站点会话并未结束。

4

1 回答 1

1

当您说“配置为使用无 cookie 会话”时,您的意思是应用程序本身不使用 cookie 来维护状态吗?如果是这种情况,如何通过 URL 重写来维护会话?

我假设您正在通过 Ping Identity 集成工具包(例如:Open Token 集成)登录应用程序。在 Java 集成工具包(例如)中,提供了以下示例代码,用于在 SP 集成应用程序中执行 SLO:

request.getSession().invalidate();
String returnUrl = “https://<PingFederate DNS>:9031” + request.getParameter(“resume”);
response.sendRedirect(returnUrl);

这确实依赖于 J2EE 应用程序中的会话管理。如果它是应用程序的新入口点(就像它可能用于 SLO,IdP 启动) - 那么您可能需要 cookie 来维护该状态信息。

在您的 SP 应用程序集成代码中是否不可能在 cookie 中存储一些会话信息,以便您以后可以使其无效?否则实现 SLO 相当棘手。这与其说是一个 PingFederate 问题,不如说是一个关于当用户直接访问应用程序并且他们已经登录时如何在应用程序中维护用户状态的问题。

于 2011-11-24T21:45:12.630 回答