Używam ACS 2.0 w mojej aplikacji MVC 4.Nie można wylogować się z usługi Active Directory podczas używania usługi Azure ACS
Jest już skonfigurowany do logowania i działa dla różnych dostawców, w tym programu ADFS. Muszę zaimplementować funkcję wylogowania.
Jak this question jest już nieaktualne, użyłem kodu z these samples:
Oto jak to wygląda:
// 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();
W rezultacie otrzymuję URL logowania, gdzie należy przekierować , wyrzuci tokeny i odeśle mnie. URL wygląda następująco:
https://myacsnamespace.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wreply=http%3a%2f%2flocalhost%3a61192%2f&wtrealm=http%3a%2f%2flocalhost%3a61192%2f
W rezultacie działa zgodnie z oczekiwaniami na kontach Google, Yahoo i Microsoft. Po wylogowaniu i uzyskaniu dostępu do chronionego obszaru otrzymuję listę dostawców tożsamości i muszę się ponownie zalogować, nawet jeśli wybiorę tego samego dostawcę.
Ale gdy używam dostawcę ADFS, to działa tak:
klikam wylogować i dostać się na stronie dostępnych dostawców
wybiorę ADFS dostawcy znowu
Dostaję się do chronionego obszaru przy użyciu moich starych poświadczeń AD
Jeśli ADFS jest jedynym dostawcą, krok 2 f ROM powyżej jest pomijany, a Ciągle loguję się bez możliwości zmiany użytkownika.
Jak widzę, ACS nie unieszkodliwia tokena bezpieczeństwa, który dostał z ADFS i ponownie go wykorzystuje.
Czy masz jakieś wskazówki, w jaki sposób mogę zmusić ACS do pozbycia się tego tokena?
Z góry dziękuję!
ACS nigdy nie zapisuje tokenów w plikach cookie w tym scenariuszu. Jedyne pliki cookie są dostępne w programie ADFS i w Twoim RP. Jeśli korzystasz z komputera przyłączonego do domeny, podejrzewam, że program ADFS może być skonfigurowany do automatycznego logowania. Czy możesz potwierdzić, czy pierwotnie musiałeś użyć nazwy użytkownika/hasła, aby się zalogować, i czy jesteś automatycznie zalogowany podczas korzystania z okna przeglądarki prywatnej? –
Oren, potwierdzam, że musiałem się zalogować po raz pierwszy - moja maszyna nie znajduje się w tej domenie. To samo zachowanie w oknie przeglądarki prywatnej. I podejrzewam, że token między ADFS i RP nie jest usuwany. Jeśli chcesz pomóc, daj mi znać twitter/fb/e-mail. Wyślę Ci adres URL i konto AD, aby rzucić okiem, a także mogę udostępniać źródła. –
AKTUALIZACJA: Znalazłem Cię na Facebooku i udostępniłeś poświadczenia i adres URL. Daj mi znać, jeśli potrzebujesz źródeł. –