Dela via


Enkel utloggning

Uppdaterad: 19 juni 2015

Gäller för: Azure

Microsoft Azure Active Directory Access Control (även kallat Access Control Service eller ACS) innehåller nu en valfri funktion för enkel inloggning för att komplettera enkel inloggning. Resultatet är en fullständig och konsekvent inloggnings- och utloggningsupplevelse för användare av webbaserade program som är integrerade med ACS.

När en slutanvändare loggar ut från ett förlitande partprogram som stöder enkel inloggning kan ACS automatiskt logga ut användaren från identitetsproviderns webbplats och logga ut dem från alla andra program som de har loggat in på med hjälp av identitetsprovidern. På samma sätt, om kunden loggar ut från identitetsproviderns webbplats, kan ACS automatiskt logga ut kunden från program som de har loggat in på med hjälp av identitetsprovidern.

Det här avsnittet beskriver hur enkel utloggning fungerar och hur du implementerar enkel utloggning för ditt förlitande partprogram. Se till att granska exempelkoden för att implementera federerad enkel inloggning i ett ASP.NET MVC 4-program i Kodexempel: ASP.NET MVC 4 med federerad utloggningt.

Systemkrav

För att implementera enkel inloggning krävs följande verktyg och tjänster.

  • Azure-prenumeration

  • Visual Studio 2012

Om enkel Sign-Out

I varje webbläsarsession kan en kund välja en federerad identitetsprovider för att logga in på ett förlitande partprogram. Med enkel utloggning loggas kunden ut automatiskt från alla förlitande partprogram som de loggade in på med samma identitetsprovider när användaren loggar ut från identitetsprovidern eller det förlitande partprogrammet.

Kunden använder till exempel ett Microsoft-konto (Windows Live-ID) för att logga in på tre ACS-integrerade förlitande partprogram. När kunden loggar ut från något av programmen loggas de automatiskt ut från sitt Microsoft-konto och loggas ut från de andra två programmen.

Fullständigt stöd för enkel utloggning är tillgängligt för anpassade WS-Federation- och ADFS-identitetsprovidrar. Begränsat stöd för enkel utloggning är tillgängligt för Facebook, Google, Microsoft-kontot och Yahoo! identitetsprovidrar. Dessa identitetsprovidrar kan inte initiera enkel utloggning. Men när ett förlitande partprogram initierar enkel utloggning loggas kunden ut från dessa identitetsprovidrar och associerade förlitande partprogram som de har loggat in på med hjälp av den identitetsprovidern.

Så här fungerar enkel Sign-Out

Enkel utloggning kan initieras av identitetsprovidern eller det förlitande partprogrammet. I det här avsnittet granskar vi var och en av dessa utloggningsprocesser och förklarar hur du kan aktivera enkel inloggning för ditt förlitande partprogram.

Program från förlitande part initierar Sign-Out

Om du vill initiera enkel utloggning när en användare loggar ut från ditt förlitande partprogram skickar du en URL med följande parametrar till ACS-WS-Federation slutpunkten.

  • wa: Ange till wsignout1.0

  • wreply: Ange värdet till URL:en för utloggningssidan, dvs. sidan där användaren omdirigeras när utloggningen är klar. Det här värdet ska vara en del av RP-domännamnet, till exempel "https://RP.com/"

  • wtrealm: Ange värdet för egenskapen Realm för det förlitande partprogrammet i ACS-hanteringsportalen.

Följande är en exempel-URL för enkel utloggning.

https://<YourNamespace>.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wtrealm=<YourAppRealm>&wreply=<YourAppRealmLogoutPage>

Exempel:

https://Fabrikam.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wtrealm=" https://www.fabrikam.com/" &wreply= https://www.fabrikam.com/logout

Exempelkod som implementerar förlitande partinitierad enkel utloggning finns i Kodexempel: ASP.NET MVC 4 med federerad utloggning. Det här exemplet innehåller kod i LogoutController.cs som hämtar värdena wreply och wrealm och skapar en instans av klassen SignOutRequestMessage .

När ACS tar emot utloggnings-URL:en avslutar ACS kundens session med identitetsprovidern genom att skicka en wsignout1.0-begäran . Sedan skickar ACS wsignoutcleanup1.0-meddelanden till andra förlitande partprogram som användaren loggade in på med hjälp av identitetsprovidern.

Identitetsprovidern initierar Sign-Out

Identitetsproviderinitierad utloggning stöds endast för anpassade WS-Federation- och ADFS-identitetsprovidrar. Det kan inte stödjas för Microsoft-konto (Windows Live-ID), Google, Yahoo! och Facebook-identitetsprovidrar eftersom dessa identitetsprovidrar inte meddelar ACS eller det förlitande partprogrammet när användaren loggar ut.

När användaren loggar ut från en WS-Federation- eller ADFS-identitetsprovider skickar identitetsprovidern ACS ett utloggningsmeddelande för wsignoutcleanup1.0 med följande format: https://<YourNamespace>.accesscontrol.windows.net/v2/wsfederation?wa=wsignoutcleanup1.0

När ACS tar emot ett wsignoutcleanup1.0-meddelande verifierar det att begäran kommer från samma slutpunkt som inloggningsbegäran genom att validera referensen i HTTP-rubriken för meddelandet: <Referrer>: https://CustomIDP där värdet <för Referrer> är värdet för refereraren i inloggnings-URL:en i ACSSignOut-cookien .

Sedan skickar ACS ett wsignoutcleanup1.0-meddelande till alla förlitande partprogram i den aktuella användarens klientwebbläsaresession som är associerade med identitetsprovidern. Processen liknar den process som beskrivs i avsnittet "Förlitande partprogram initierar utloggning". Identitetsprovidern kan omdirigera webbläsaren till en utloggningssida som den styr för att slutföra utloggningsprocessen.

Process för enkel inloggning

I det här avsnittet beskrivs varje steg i processen för enkel utloggning. Eftersom ACS hanterar informationen åt dig behöver du inte förstå den här processen. Det kan dock vara användbart vid anpassning eller felsökning.

Steg för steg Sign-Out

  1. När ACS tar emot en signout1.0-begäran på sin WS-Federation slutpunkt letar ACS upp identitetsprovidern för initieraren för utloggningsbegäran i ACSSignOut-cookien.

    ACS använder följande matchande regler för att identifiera identitetsprovidern.

    • Om parametern wtrealm anges i utloggningsbegäran söker ACS efter värdet wtrealm i listan över förlitande parter för varje identitetsprovider.

    • Om wtrealm inte har angetts och det bara finns en identitetsproviderpost i ACSSignOut-cookien använder ACS identitetsprovidern i ACSSignOut-cookien.

    • Annars visar ACS en felsida som anger att utloggningsförsöket misslyckades eftersom parametern wtrealm saknas.

  2. ACS skickar ett signout1.0-meddelande till identitetsprovidern genom att presentera en sida med ett infogat ramelement (<iframe>). ACS lägger också till <iframe-element> som innehåller meddelandet SignOutCleanup1.0 på sidorna för alla aktiva WS-Federation förlitande parter förutom den initierande parten och ACS tar bort de förlitande parterna från ACSSignOut-cookien .

  3. Sidan som visar utloggningsstatusen för förlitande part innehåller också JavaScript som körs under en angiven tid och sedan omdirigerar webbläsaren. Om en wreply-parameter angavs i ACSSignOut-cookien omdirigerar JavaScript till den adress som anges av det wreply-värdet för att slutföra utloggningen. Annars omdirigeras JavaScript till den förlitande partens retur-URL, enligt beskrivningen i ACS-hanteringsportalen.

ACS använder en sessionscookie med namnet ACSSignOut för att registrera identitetsprovidern som autentiserade användaren till programmet. Du kan visa cookien i sessionsspårningar. Sessionscookien har följande namnformat: ACSSignOut.<YourACSNamespace>.

ACSSignOut-cookien identifierar det förlitande partprogrammet och identitetsprovidern som autentiserade användaren. ACS använder cookien under enkel utloggning för att säkerställa att rätt identitetsprovider loggas ut och att användaren loggas ut från andra förlitande partprogram som de loggade in på med hjälp av identitetsprovidern.

Begränsningar för enkel Sign-Out

När du använder enkel utloggning bör du vara medveten om följande begränsningar.

  • Endast anpassade WS-Federation identitetsprovidrar och ADFS-identitetsprovidrar kan initiera enkel utloggning. Leverantörer av sociala identiteter, till exempel Yahoo, Google, Microsoft-konto (Windows Live ID) och Facebook, meddelar inte ACS eller den förlitande partens program när kunden loggar ut från identitetsproviderns webbplats. Därför loggas inte användare av förlitande part-program som använder den här identitetsprovidern ut automatiskt när utloggningen kommer från identitetsproviderns webbplats.

  • Enkel utloggning kanske inte är effektivt i alla miljöer. När ACS tar emot ett meddelande om enkel utloggning från ett förlitande partprogram skickar det en wsignout1.0-begäran till identitetsprovidern och ett wsignoutcleanup1.0-meddelande till var och en av de andra förlitande partprogrammen. När ACS tar emot ett wsignoutcleanup1.0-begärandemeddelande från en identifierarprovider skickar det ett wsignoutcleanup1.0-meddelande till vart och ett av de förlitande partprogrammen. ACS kan dock inte garantera att identifieringsprovidern eller förlitande partprogram svarar korrekt genom att logga ut användaren.

  • När användarna loggar ut från Google-identitetsprovidern i Internet Explorer visar webbläsaren en uppmaning om att endast skyddat innehåll visas. För att slutföra utloggning måste användarna klicka på "Visa allt innehåll". När utloggningen är klar omdirigeras webbläsaren till den URL som anges av värdet för parametern wreply .

    Internet Explorer 9 och senare versioner av Internet Explorer visar meddelandet om säkert innehåll när det påträffar icke-skyddat innehåll på en skyddad sida, till exempel bilder eller skript som kommer från en icke-skyddad server. I det här fallet reagerar den på säkert (HTTPS/SSL) ACS-innehåll och icke-säkert (HTTP)-innehåll från identitetsprovidern. ACS kan inte ändra eller ignorera det här beteendet.

    Användare kan ignorera meddelandet enligt beskrivningen i meddelandet "Endast säkert innehåll visas" i Internet Explorer 9 eller senare. Men eftersom den här inställningen gäller för alla webbplatser och kan göra användarens dator sårbar för skadligt innehåll, rekommenderas standardinställningen, som blockerar icke-säkert innehåll (HTTP).

För att hjälpa slutanvändarna att initiera enkel utloggning bör inloggningssidan för förlitande part-programmet instruera användarna att stänga webbläsaren eller uttryckligen logga ut från andra förlitande partprogram och identitetsproviderns webbplats. Det räcker inte att stänga en webbläsarflik, ett fönster eller en sida. Om datorn delas eller på en offentlig plats, till exempel en helskärmsdator, bör användarna rensa webbläsarhistoriken innan de stänger webbläsaren.

Se även

Begrepp

Kodexempel: ASP.NET MVC 4 med federerad utloggning

Andra resurser

Passiv autentisering för ASP.NET i WIF