我在我的MVC 4應用程序中使用ACS 2.0。使用Azure ACS時無法從Active Directory註銷
它已經配置爲登錄,它適用於包括ADFS在內的各種提供者。 我需要實現註銷功能。
由於this question已經過時,我使用的代碼從these samples:
這裏是如何看起來像:
// Load Identity Configuration
FederationConfiguration config = FederatedAuthentication.FederationConfiguration;
// Get wtrealm from WsFederationConfiguation Section
string wtrealm = config.WsFederationConfiguration.Realm;
string wreply = wtrealm; //return url
// Read the ACS Ws-Federation endpoint from web.Config
string wsFederationEndpoint = ConfigurationManager.AppSettings["ida:Issuer"];
SignOutRequestMessage signoutRequestMessage = new SignOutRequestMessage(new Uri(wsFederationEndpoint));
signoutRequestMessage.Parameters.Add("wreply", wreply);
signoutRequestMessage.Parameters.Add("wtrealm", wtrealm);
FederatedAuthentication.SessionAuthenticationModule.SignOut();
var signoutUrl = signoutRequestMessage.WriteQueryString();
其結果是,我得到的註銷URL,我應該重定向,它會處置令牌並將我送回。網址如下所示:
https://myacsnamespace.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wreply=http%3a%2f%2flocalhost%3a61192%2f&wtrealm=http%3a%2f%2flocalhost%3a61192%2f
因此,Google,Yahoo和Microsoft帳戶的預期效果。 當我退出並嘗試訪問受保護區域時,我收到了一個身份提供者列表,我必須再次登錄,即使我選擇了相同的提供者。
但是當我使用ADFS提供商,它的工作原理類似:
我點擊登出,並獲得可用的提供的頁面
我選擇ADFS提供商再次
我用我的舊AD憑據進入保護區
如果我將ADFS作爲唯一的提供者,則第2步f從上面的ROM被跳過,並且 我不斷地登錄,無法更改用戶。
當我看到會發生什麼時,ACS不會處置它從ADFS獲得的安全令牌並重新使用它。
你有任何線索可以強制ACS處置這個令牌嗎?
在此先感謝!
在這種情況下,ACS永遠不會在cookie中保存令牌。唯一的Cookie位於ADFS和您的RP。如果您位於已加入域的計算機上,我懷疑ADFS可能已配置爲自動登錄。您是否可以確認您最初是否必須使用用戶名/密碼登錄,以及在使用私人瀏覽器窗口時是否自動登錄? – 2013-03-15 18:53:13
Oren,我確認我必須首次登錄 - 我的機器不在該域中。私人瀏覽器窗口上的行爲相同。而且我懷疑ADFS和RP之間的令牌沒有處理。如果您願意幫助,請告訴我您的twitter/fb/e-mail。我會給你發送URL和AD帳戶來看看,我也可以分享源代碼。 – 2013-03-18 08:22:41
更新:在Facebook上找到您並共享憑據和URL。讓我知道你是否需要這些資源。 – 2013-03-18 08:31:04