【发布时间】: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);