适当的ADFS单点注销清理和重定向

时间:2015-08-06 22:28:48

标签: asp.net-mvc-4 redirect windows-server-2012 adfs

首先,我们的环境:

  • Windows Server 2012 R2
  • MVC 5

问题:

我们已为单点登录和单点登录配置了ADFS。登录和注销都完全正常。但是,我们对我们的实现有点尝试,因为我们实现注销的方式似乎与任何文档似乎描述的方式有很大不同。

问题:

我们的连线方式是否正确?或者它是以这种方式工作只是运气,它实际上应该以其他方式工作?

我们如何运作:

从高层次来看,我们如何将事情联系起来:

  1. RP(依赖方)向ADFS提交wsignoutcleanup1.0请求以及wreply。例如:GET /adfs/ls/?wa=wsignoutcleanup1.0&wreply=https%3a%2f%2flocalhost%3a44300%2fAccount%2fLoggedOut HTTP/1.1

  2. ADFS使用包含以下内容的响应正文回复200:

    • javascript重定向到第一步中发布的wreply。 window.onload = function() { document.location = decodeURIComponent('https%3a%2f%2flocalhost%3a44300%2fAccount%2fLoggedOut') }
    • iframe为每个RP发出一个wsignoutcleanup1.0。例如:<iframe style="visibility: hidden; width: 1px; height: 1px;" src="https://localhost:44300/Claims/FederationResult?wa=wsignoutcleanup1.0" id="signoutFrame" class="signoutFrame"></iframe>

    • iframe为IP发出wsignout1.0。 <iframe style="visibility: hidden; width: 1px; height: 1px;" src="https://localdevsts:44301/Home/Index/?wa=wsignout1.0" id="signoutFrame" class="signoutFrame"></iframe>

    • javascript有效地将我们重定向到我们最初指定的wreply,iframe有效地将我们从IP中签出,并通知任何其他RP退出。

  3. 我们特别关注:

    我们的解决方案是通过发出wsignoutcleanup1.0请求来启动注销流程。这与所有文档相反,后者声明使用wsignout1.0请求启动流程。

    参考文献:

    除了我在这里列出的内容之外,还有更多内容,但这些是我的团队不断回头的(无论好坏)。

    对我们的问题的任何建设性回应表示赞赏!

1 个答案:

答案 0 :(得分:0)

您的具体详细信息(带有wsignout1.0的iframe)对我来说是新的。这不再让我感到惊讶。这确实不正确。它应该只返回wsignoutcleanup1.0。

可能你最好要求使用wsignout1.0进行注销,这些花哨的东西往往不太稳定......我过去常常这样做。但我不再这样做了。

现在谈到下一个问题:它是否比标准更好?微软经常改变这种情况。有缺点(每次都有不同的行为)和优点(它允许多个,同时,IdP登录会话。在SingleSignOn中可以说是异端邪说???)