2013-10-14 27 views
1

我正在使用STS來控制SSO。我有一個STS站點和兩個客戶站點應用程序(站點a,站點b)。Single SignOut問題,它不能在多個站點執行

站點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(); 

} 

如果我從網站signout A,然後再刷新站點B,站點A將重定向到STS登錄登錄頁面,站點B仍然在使用相同的同一頁面登錄信息。

任何人都可以知道如何做單一簽出/關?

+0

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

回答

0

使用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); 
+0

感謝您的建議!,我已經嘗試過了,它不起作用,「ThreadAbortException」會中斷SignOut操作,當我點擊Back按鈕並刷新網站時,登錄信息仍然保留在頁面中。 – user2376512

+0

很高興知道您找到了解決方案。將其添加爲幫助某人搜索類似問題的答案。 – jd4u

+0

=。= ||,它不起作用,ThreadAbortException異常中斷Signout操作 – user2376512

相關問題