【问题标题】:Single SignOut Issue, it cannot be performed in multiple site单点登出问题,不能在多个站点执行
【发布时间】:2013-10-15 02:43:00
【问题描述】:

我正在使用 STS 来控制 SSO。我有一个 STS 站点和两个客户端站点应用程序(站点 a、站点 b)。

站点 a 和站点 b 都添加了 STS 站点作为其 STS 参考。单点登录工作正常,我只能登录一次,但是单点注销不起作用。

在站点 a 和站点 b 中,我在下面实现了 FederatedPassiveSignInStatus 控件。

<wif:FederatedPassiveSignInStatus ID="FederatedPassiveSignInStatus1" runat="server" 
    SignOutAction="FederatedPassiveSignOut" OnSignedOut="OnSigOut_click" />

OnSigOut_click:

public void OnSigOut_click(object sender, EventArgs e)
{

    FederatedAuthentication.SessionAuthenticationModule.CookieHandler.Delete();
    FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie();
    FederatedAuthentication.SessionAuthenticationModule.SignOut();
    FederatedAuthentication.WSFederationAuthenticationModule.SignOut(false);
    FormsAuthentication.SignOut();
    Session.Abandon();

}

如果我先从站点 A 退出,然后刷新站点 B,站点 A 将重定向到 STS 登录登录页面,站点 B 仍然在相同的登录信息页面中。

有人知道如何进行单点注销吗?

【问题讨论】:

  • var fam = FederatedAuthentication.SessionAuthenticationModule; var signOutRequestMessage = new SignOutRequestMessage(new Uri(fam.Issuer), fam.Realm); var signOutURI = signOutRequestMessage.WriteQueryString(); fam.SignOut(); Response.Redirect(signOutURI, false);

标签: c# asp.net wif


【解决方案1】:

使用 WSFederationAuthenticationModule。将以下模块添加到 web.config

<modules><add name="WsFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/></modules>

使用以下方法。以它为例。

WSFederationAuthenticationModule fam = FederatedAuthentication.WSFederationAuthenticationModule;
fam.FederatedSignOut(STSSignOutAbsoluteURL,RPReturnURL); 

【讨论】:

  • 谢谢你的建议!,我试过了,它不起作用,“ThreadAbortException”打破了SignOut动作,当我点击返回按钮并刷新网站时,登录信息仍然留在页面中.
  • 很高兴知道您找到了解决方案。将其添加为答案,以帮助搜索类似问题的人。
  • =.=||,它不起作用,ThreadAbortException 中断注销操作
  • 此外,我必须找到一些方法将 ?wa=wsignoutcleanup1.0 调用回客户端站点。你知道怎么做吗?
  • 终于找到原因了,如果我在WSFederationAuthenticationModule.FederatedSignOut(null, null)方法中填了'null',就不会出现ThreadAbortException,ss-out工作正常。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
相关资源
最近更新 更多