Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何从PingFederate中的无Cookie应用程序执行SLO_Asp.net_Session State_Cookieless_Pingfederate - Fatal编程技术网

Asp.net 如何从PingFederate中的无Cookie应用程序执行SLO

Asp.net 如何从PingFederate中的无Cookie应用程序执行SLO,asp.net,session-state,cookieless,pingfederate,Asp.net,Session State,Cookieless,Pingfederate,我正在尝试使用PingFederate进行SLO。其中一个SP应用程序配置为使用无Cookie会话。PingFederate中的此SP应用程序设置了注销URL,例如'http://site/logout.aspx,但当SLO进程被触发时,PingFederate会成功地将浏览器重定向到此url,但重定向到与首次创建SSO时产生的会话完全不同的会话。如何配置PingFederate以重定向到SP的注销页面,从而重用在SSO过程中创建的会话 编辑:对不起,我忘了提一些事情。实际上,IdP和SP应用程

我正在尝试使用PingFederate进行SLO。其中一个SP应用程序配置为使用无Cookie会话。PingFederate中的此SP应用程序设置了注销URL,例如'http://site/logout.aspx,但当SLO进程被触发时,PingFederate会成功地将浏览器重定向到此url,但重定向到与首次创建SSO时产生的会话完全不同的会话。如何配置PingFederate以重定向到SP的注销页面,从而重用在SSO过程中创建的会话

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

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

此sessionState配置使url看起来像'http://site(S(pvvofbemnrmaixo2emaeo0t))/Home.aspx',这对于SSO来说是正常的,因为'http://site/Home.aspx但是,当SP的注销url(http://site/logout.aspx)由SLO进程调用时,将生成SP站点的新会话(与最初由SSO创建的会话不同)。因此,原始SP站点会话不会结束。

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

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

request.getSession().invalidate();
String returnUrl = “https://<PingFederate DNS>:9031” + request.getParameter(“resume”);
response.sendRedirect(returnUrl);
request.getSession().invalidate();
String returnUrl=“https://:9031”+request.getParameter(“resume”);
sendRedirect(returnUrl);
它实际上依赖于J2EE应用程序中的会话管理。如果它是应用程序的新入口点(可能是SLO、IdP启动的入口点),那么您可能需要cookies来维护该状态信息

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

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

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

request.getSession().invalidate();
String returnUrl = “https://<PingFederate DNS>:9031” + request.getParameter(“resume”);
response.sendRedirect(returnUrl);
request.getSession().invalidate();
String returnUrl=“https://:9031”+request.getParameter(“resume”);
sendRedirect(returnUrl);
它实际上依赖于J2EE应用程序中的会话管理。如果它是应用程序的新入口点(可能是SLO、IdP启动的入口点),那么您可能需要cookies来维护该状态信息


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

对不起,我没有说清楚。我只是编辑了原始问题,以包含更多细节。谢谢你的澄清。我最初的建议是正确的。在集成代码(用于SSO)中,您需要以某种方式保存会话状态,以便当请求返回到应用程序中的SLO端点时(链接中没有通常的会话信息),应用程序能够解析它。同样,我建议最简单的方法是将其粘贴到一个特殊的SSO会话cookie中。当SLO请求进来时,检查这个cookie,然后重定向到应用程序注销:对不起,我没有说清楚。我只是编辑了原始问题,以包含更多细节。谢谢你的澄清。我最初的建议是正确的。在集成代码(用于SSO)中,您需要以某种方式保存会话状态,以便当请求返回到应用程序中的SLO端点时(链接中没有通常的会话信息),应用程序能够解析它。同样,我建议最简单的方法是将其粘贴到一个特殊的SSO会话cookie中。当SLO请求进入时,检查此cookie,然后重定向到应用程序注销:请格式化您的代码部分。请格式化您的代码部分。