【问题标题】:Sign out programatically from 3rd party systems opened in another tab从另一个选项卡中打开的第 3 方系统以编程方式退出
【发布时间】:2014-07-07 13:45:39
【问题描述】:

我们的仪表板应用程序链接到各种第 3 方系统,它使用基于表单的身份验证。当经过身份验证的用户单击第 3 方系统的链接时,我使用 User.Identity.Name 获取身份并形成一个 POST 请求,以对 那个 特定系统进行 进一步 身份验证。当从我们的仪表板单击其链接时,每个系统都会在新选项卡中打开 - 仪表板应用程序在前一个选项卡中保持打开状态。登录正常。

这些系统有自己的退出链接。我尝试以编程方式将 GET 和 POST 请求发送到注销 url - 从仪表板选项卡,但这不起作用。用户已成功退出仪表板应用,但仍可继续从其他选项卡访问 3rd 方系统链接。

如果我知道它的登出网址,我该如何从第 3 方系统中登出?

【问题讨论】:

  • 仍在等待评论/答案! :) 我需要重新表述这个问题吗?
  • 这很大程度上取决于“第三方系统”,您是否尝试在调用 url 时调试响应?你得到什么回应?
  • 您只需将用户名发布到他们的系统,就可以在那里进行身份验证?不是您问题的直接答案,但听起来像是一个巨大的安全漏洞。我希望听起来只是这样,并且实施是安全的。
  • @BenjaminPaul 是的,响应是 该特定系统登录页面的 HTML。如果我将第 3 方的注销 url 复制粘贴到我们的仪表板应用程序的选项卡中,则用户将从 that 系统中注销 - 该系统在另一个选项卡中打开。但显然这不是一个实际的解决方案。如果我通过 HttpWebRequest 向注销 url 发送 GET 请求,我会得到第 3 方登录页面的 HTML 作为响应,但我仍然可以浏览第 3 方系统。
  • @greatbear302:您只需返回一个包含 iframe 列表的页面,其中每个 iframe 都指向一个应该注销某个应用程序的页面。浏览器拾取页面,跟踪所有 iframe,并一一退出所有应用程序。

标签: c# session authentication single-sign-on


【解决方案1】:

您应该只返回一个包含 iframe 列表的页面,其中每个 iframe 都指向一个应该退出某个应用程序的页面。浏览器拾取页面,跟踪所有 iframe,并一一注销所有应用程序。

您不应该担心任何问题,这个想法是从 ws-federation 规范中借用的,它完全兼容并且不会引发任何问题。我们使用它多年。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多