2015-08-30 66 views
1

我正在使用WSFederationAuthentication模塊進行身份驗證。我想這樣做:用戶按下注銷按鈕後,他註銷(刪除所有cookie)並重定向到登錄頁面。 我有註銷按鈕的代碼:如何強制聯合登錄重定向登錄頁面?

var ls = new LoginStatus(); 
ls.LogoutAction = LogoutAction.Redirect; 
ls.LogoutPageUrl = {some URL, where I have sign out code} 

Signout部分:

Microsoft.IdentityModel.Web.WSFederationAuthenticationModule authModule = FederatedAuthentication.WSFederationAuthenticationModule; 
String signoutURL = WSFederationAuthenticationModule.GetFederationPassiveSignOutUrl(
authModule.Issuer, 
{login Url}, 
null); 

WSFederationAuthenticationModule.FederatedSignOut(
new Uri(signoutURL), 
new Uri(authModule.Realm)); 

此代碼確實signout和刪除cookies,但不重定向到登錄頁面。用戶看到的網址仍然包含此部分: & wreply = {loginUrl}

據我所知,wreply參數並不總是被使用。

而不是使用FederatedSignOut()方法,我想這一個:

System.Net.WebRequest req = System.Net.WebRequest.Create(signoutURL); 
System.Net.WebResponse resp = req.GetResponse(); 
Redirect(LoginUrl); 

但是,這並沒有真正做註銷。當用戶下次嘗試登錄時,他不需要輸入任何憑證並自動登錄。我的猜測,並非所有的cookies都被刪除了。

所以,我的問題是,我怎樣才能註銷並強制重定向到登錄頁面?

P.S.我也自己刪除FedAuth cookies。

回答

0

似乎是,重定向URL可以的URL,無論是寫在IDP配置:

<passiveEndpoints> 
<endpoint endpointType="WsFed" location="{this url}" binding="Post" /> 
</passiveEndpoints> 

如果wreply參數值是其他任何網址,它不會工作。

0

「如果ACSSignOut餅乾指定了wreply參數,則 JavaScript重定向到由wreply值指示 地址完成註冊的。否則,JavaScript重定向到的該 返回URL依照ACS管理 門戶網站中指定的依賴方。「

Source

+0

奇怪的是,我沒有那個cookie。它可以被稱爲ABCSTSSignOut嗎?另外,你知道該cookie的格式嗎? – Vita1ij

1

我想你可能誤解了如何聯合標誌,並簽署了工作,(我這樣說是因爲你已經忘了提我所認爲是最重要的事情。)

當您嘗試登錄到使用WS聯合身份驗證的應用程序時,您實際上已被重定向到身份提供商(Idp)並且您登錄到此Idp。登錄Idp後,您將通過安全令牌重定向到您的網站,然後您也將登錄到您的網站。

在這個階段,您登錄到生效兩個應用:

  1. 的IDP
  2. 您的網站

你到底想達到什麼目的?

  1. 註銷您的網站只有
  2. 聯合登出(即登出後,IDP和您的網站和其他依靠黨的)

的 如果我們的情況下,1那麼簡單。刪除您的cookies即可,但您仍然可以登錄Idp,因此當用戶返回您的網站並重定向到Idp時,他們很可能會被重定向回您的網站並使用安全令牌而不會被提示憑據,然後將再次登錄到您的網站,這似乎有點毫無意義。

鑑於此,我認爲你是方案2井在這種情況下之後,你真正想要的功能取決於您所使用的軟件爲您的IDP,有些東西你都忽視了這個問題提。

不幸的是,我不相信有一個通用的方法做你想要的所有IDP的東西,甚至更多一些IDP的將不直接支持它。

我認爲它可能是最好養了解您的IDP工作以及如何得到這個工作的問題。此外,問題中包含的一些非常好的事情可能是您的網站和Idp的URL(不是爲了「檢查出來」,而是因爲如果它們使用相同的域名可能會有其他間接解決方案)。另外,關於您的Idp和網站基礎設施的任何內容也將有所幫助,因爲特定設置可能會提供間接解決方案。

相關問題