Konfigurera sessionsbeteende i Azure Active Directory B2C
Innan du börjar använder du väljaren Välj en principtyp för att välja den typ av princip som du konfigurerar. Azure Active Directory B2C erbjuder två metoder för att definiera hur användare interagerar med dina program: via fördefinierade användarflöden eller genom fullständigt konfigurerbara anpassade principer. De steg som krävs i den här artikeln skiljer sig åt för varje metod.
Enkel inloggning (SSO) ger säkerhet och bekvämlighet när användare loggar in mellan program i Azure Active Directory B2C (Azure AD B2C). Den här artikeln beskriver de metoder för enkel inloggning som används i Azure AD B2C och hjälper dig att välja den lämpligaste SSO-metoden när du konfigurerar din princip.
Med enkel inloggning loggar användarna in en gång med ett enda konto och får åtkomst till flera program. Programmet kan vara ett webb-, mobil- eller ensidesprogram, oavsett plattform eller domännamn.
När användaren först loggar in på ett program bevarar Azure AD B2C en cookiebaserad session. Vid efterföljande autentiseringsbegäranden läser och validerar Azure AD B2C den cookiebaserade sessionen och utfärdar en åtkomsttoken utan att uppmana användaren att logga in igen. Om den cookiebaserade sessionen upphör att gälla eller blir ogiltig uppmanas användaren att logga in igen.
Förutsättningar
- Skapa ett användarflöde så att användare kan registrera sig och logga in på ditt program.
- Registrera ett webbprogram.
Översikt över Azure AD B2C-session
Integrering med Azure AD B2C omfattar tre typer av SSO-sessioner:
- Azure AD B2C – Session som hanteras av Azure AD B2C
- Federerad identitetsprovider – Session som hanteras av identitetsprovidern, till exempel Facebook, Salesforce eller Microsoft-konto
- Program – Session som hanteras av webb-, mobil- eller ensidesprogrammet
Azure AD B2C-session
När en användare autentiserar med ett lokalt eller socialt konto lagrar Azure AD B2C en cookiebaserad session i användarens webbläsare. Cookien lagras under azure AD B2C-klientdomännamnet, till exempel https://contoso.b2clogin.com
.
När en användare loggar in med ett federerat konto startar ett sessionstidsfönster, även kallat time to live (TTL). Om användaren loggar in på samma eller en annan app i denna TTL försöker Azure AD B2C hämta en ny åtkomsttoken från den federerade identitetsprovidern. Om den federerade identitetsprovidersessionen har upphört att gälla eller är ogiltig uppmanar den federerade identitetsprovidern användaren att ange sina autentiseringsuppgifter. Om användarens session pågår, eller om användaren är inloggad med ett lokalt konto i stället för ett federerat konto, auktoriserar Azure AD B2C användaren och förhindrar ytterligare uppmaningar.
Du kan konfigurera sessionsbeteendet, inklusive sessions-TTL och hur Azure AD B2C delar sessionen mellan principer och program.
Federerad identitetsprovidersession
En social identitetsprovider eller företagsidentitetsprovider hanterar sin egen session. Cookien lagras under identitetsproviderns domännamn, till exempel https://login.salesforce.com
. Azure AD B2C styr inte den federerade identitetsprovidersessionen. I stället bestäms sessionsbeteendet av den federerade identitetsprovidern.
Föreställ dig följande scenario:
- En användare loggar in på Facebook för att kontrollera sitt flöde.
- Senare öppnar användaren programmet och startar inloggningsprocessen. Programmet omdirigerar användaren till Azure AD B2C för att slutföra inloggningsprocessen.
- På registrerings- eller inloggningssidan för Azure AD B2C väljer användaren att logga in med sitt Facebook-konto. Användaren omdirigeras till Facebook. Om det finns en aktiv session på Facebook uppmanas användaren inte att ange sina autentiseringsuppgifter och omdirigeras omedelbart till Azure AD B2C med en Facebook-token.
Programsession
En OAuth2-åtkomsttoken, ID-token eller SAML-token kan skydda ett webb-, mobil- eller ensidesprogram. När en användare försöker komma åt en skyddad resurs i appen kontrollerar appen om det finns en aktiv session på programsidan. Om en appsession inte finns eller om sessionen upphör att gälla dirigerar appen användaren till azure AD B2C-inloggningssidan.
Programsessionen kan vara en cookiebaserad session som lagras under programmets domännamn, till exempel https://contoso.com
. Mobila program kan lagra sessionen på ett annat sätt men med en liknande metod.
Konfigurera beteende för Azure AD B2C-sessioner
Du kan konfigurera beteendet för Azure AD B2C-sessioner, inklusive:
Livslängd för webbappsession (minuter) – Den tid som Azure AD B2C-sessionscookien lagras i användarens webbläsare efter lyckad autentisering. Du kan ange sessionslivslängden upp till 24 timmar.
Tidsgräns för webbappsession – Anger hur en session utökas av inställningen sessionslivslängd eller inställningen Håll mig inloggad (KMSI).
- Rullande – Anger att sessionen utökas varje gång användaren utför en cookiebaserad autentisering (standard).
- Absolut – anger att användaren tvingas autentisera igen efter den angivna tidsperioden.
Konfiguration av enkel inloggning – Azure AD B2C-sessionen kan konfigureras med följande omfång:
- Klientorganisation – Den här inställningen är standardinställningen. Med den här inställningen kan flera program och användarflöden i B2C-klientorganisationen dela samma användarsession. När en användare till exempel loggar in på ett program kan användaren också smidigt logga in på en annan när han eller hon kommer åt det.
- Program – Med den här inställningen kan du underhålla en användarsession exklusivt för ett program, oberoende av andra program. Du kan till exempel använda den här inställningen om du vill att användaren ska logga in på Contoso Pharmacy oavsett om användaren redan är inloggad på Contoso Groceries.
- Princip – Med den här inställningen kan du underhålla en användarsession exklusivt för ett användarflöde, oberoende av vilka program som använder den. Azure AD B2C ger till exempel användaren åtkomst till delar med högre säkerhet i flera program om användaren redan har loggat in och slutfört ett MFA-steg (multifaktorautentisering). Den här åtkomsten fortsätter så länge sessionen som är associerad med användarflödet förblir aktiv.
- Undertryckt – Den här inställningen tvingar användaren att köra igenom hela användarflödet vid varje körning av principen.
Konfigurera användarflödet
Följ dessa steg för att konfigurera sessionsbeteendet i användarflödet:
- Logga in på Azure-portalen.
- Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
- Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.
- Välj Användarflöden.
- Öppna användarflödet som du skapade tidigare.
- Välj Egenskaper.
- Konfigurera livslängden för webbappsessionen (minuter), tidsgränsen för webbappsessionen, konfiguration av enkel inloggning och Kräv ID-token i utloggningsbegäranden efter behov.
- Klicka på Spara.
Konfigurera den anpassade principen
Följ dessa steg för att konfigurera sessionsbeteendet i din anpassade princip:
Öppna den förlitande partfilen (RP), till exempel SignUpOrSignin.xml
Om det inte redan finns lägger du till följande
<UserJourneyBehaviors>
element i elementet<RelyingParty>
. Den måste finnas omedelbart efter<DefaultUserJourney ReferenceId="UserJourney Id"/>
.<UserJourneyBehaviors> <SingleSignOn Scope="Application" /> <SessionExpiryType>Absolute</SessionExpiryType> <SessionExpiryInSeconds>86400</SessionExpiryInSeconds> </UserJourneyBehaviors>
När du har lagt till beteendeelementen för användarresan bör elementet
RelyingParty
se ut som i följande exempel:<RelyingParty> <DefaultUserJourney ReferenceId="SignUpOrSignIn" /> <UserJourneyBehaviors> <SingleSignOn Scope="Application" /> <SessionExpiryType>Absolute</SessionExpiryType> <SessionExpiryInSeconds>86400</SessionExpiryInSeconds> </UserJourneyBehaviors> <TechnicalProfile Id="PolicyProfile"> <DisplayName>PolicyProfile</DisplayName> <Protocol Name="OpenIdConnect" /> <OutputClaims> <OutputClaim ClaimTypeReferenceId="displayName" /> <OutputClaim ClaimTypeReferenceId="givenName" /> ... </OutputClaims> <SubjectNamingInfo ClaimType="sub" /> </TechnicalProfile> </RelyingParty>
Ändra värdet för
Scope
attributet till ett av det möjliga värdet:Suppressed
,Tenant
,Application
, ellerPolicy
. Mer information finns i referensartikeln RelyingParty .Ange elementet
SessionExpiryType
tillRolling
ellerAbsolute
. Mer information finns i referensartikeln RelyingParty .Ange ett numeriskt värde för elementet
SessionExpiryInSeconds
mellan 900 sekunder (15 minuter) och 86 400 sekunder (24 timmar). Mer information finns i referensartikeln RelyingParty .
Aktivera Behåll mig inloggad (KMSI)
Du kan aktivera KMSI-funktionen för användare av dina webbprogram och inbyggda program som har lokala konton i din Azure AD B2C-katalog. När du aktiverar funktionen kan användarna välja att förbli inloggade så att sessionen förblir aktiv när de har stängt webbläsaren. Sessionen underhålls genom att ange en beständig cookie. Användare som väljer KMSI kan öppna webbläsaren igen utan att uppmanas att ange sitt användarnamn och lösenord igen. Den här åtkomsten (beständig cookie) återkallas när en användare loggar ut. Mer information finns i livedemon.
KMSI kan konfigureras på den enskilda användarflödesnivån. Innan du aktiverar KMSI för dina användarflöden bör du tänka på följande:
- KMSI stöds endast för de rekommenderade versionerna av användarflöden för registrering och inloggning (SUSI), inloggning och profilredigering. Om du för närvarande har standardversioner (äldre) eller äldre förhandsversioner – v2 av dessa användarflöden och vill aktivera KMSI måste du skapa nya rekommenderade versioner av dessa användarflöden.
- KMSI stöds inte med användarflöden för lösenordsåterställning eller registrering.
- Om du vill aktivera KMSI för alla program i klientorganisationen rekommenderar vi att du aktiverar KMSI för alla användarflöden i klientorganisationen. Eftersom en användare kan presenteras med flera principer under en session är det möjligt att de kan stöta på en som inte har KMSI aktiverat, vilket skulle ta bort KMSI-cookien från sessionen.
- KMSI bör inte vara aktiverat på offentliga datorer.
Konfigurera KMSI för ett användarflöde
Så här aktiverar du KMSI för ditt användarflöde:
Logga in på Azure-portalen.
Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.
Välj Användarflöden (principer).
Öppna användarflödet som du skapade tidigare.
Välj Egenskaper.
Under Sessionsbeteende väljer du Aktivera behåll mig inloggad session. Bredvid Behåll mig inloggad session (dagar)anger du ett värde från 1 till 90 för att ange hur många dagar en session kan förbli öppen.
Användarna bör inte aktivera det här alternativet på offentliga datorer.
Konfigurera sididentifieraren
Om du vill aktivera KMSI anger du innehållsdefinitionselementet DataUri
till sididentifierareunifiedssp
och sidversion1.1.0 eller senare.
Öppna tilläggsfilen för principen. Exempel:
SocialAndLocalAccounts/
TrustFrameworkExtensions.xml
Den här tilläggsfilen är en av de principfiler som ingår i startpaketet för anpassad princip, som du får i förhandskravet Kom igång med anpassade principer.Sök efter elementet BuildingBlocks . Om elementet inte finns lägger du till det.
Lägg till elementet ContentDefinitions i elementet BuildingBlocks i principen.
Din anpassade princip bör se ut som följande kodfragment:
<BuildingBlocks> <ContentDefinitions> <ContentDefinition Id="api.signuporsignin"> <DataUri>urn:com:microsoft:aad:b2c:elements:unifiedssp:1.1.0</DataUri> </ContentDefinition> </ContentDefinitions> </BuildingBlocks>
Lägg till metadata i den självsäkra tekniska profilen
Om du vill lägga till kryssrutan KMSI på registrerings- och inloggningssidan anger du metadata till setting.enableRememberMe
true. Åsidosätt de tekniska profilerna SelfAsserted-LocalAccountSignin-Email i tilläggsfilen.
Hitta elementet ClaimsProviders. Om elementet inte finns lägger du till det.
Lägg till följande anspråksprovider till elementet ClaimsProviders:
<ClaimsProvider> <DisplayName>Local Account</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email"> <Metadata> <Item Key="setting.enableRememberMe">True</Item> </Metadata> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
Spara filnamnstillägget.
Konfigurera en förlitande partfil
Uppdatera den förlitande partfilen (RP) som initierar den användarresa som du skapade. Med keepAliveInDays
parametern kan du konfigurera hur länge kmsi-sessionscookien (keep me signed in) ska bevaras. Om du till exempel anger värdet till 30 sparas KMSI-sessionscookien i 30 dagar. Intervallet för värdet är mellan 1 och 90 dagar. Om värdet anges till 0 inaktiveras KMSI-funktioner.
Öppna din anpassade principfil. Till exempel SignUpOrSignin.xml.
Om den inte redan finns lägger du till en
<UserJourneyBehaviors>
underordnad nod i<RelyingParty>
noden. Den måste finnas omedelbart efter<DefaultUserJourney ReferenceId="User journey Id" />
, till exempel:<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
.Lägg till följande nod som underordnad elementet
<UserJourneyBehaviors>
.<UserJourneyBehaviors> <SingleSignOn Scope="Tenant" KeepAliveInDays="30" /> <SessionExpiryType>Absolute</SessionExpiryType> <SessionExpiryInSeconds>1200</SessionExpiryInSeconds> </UserJourneyBehaviors>
Du anger både KeepAliveInDays och SessionExpiryInSeconds så att om en användare aktiverar KMSI under en inloggning används KeepAliveInDays för att ange cookies, annars används värdet som anges i parametern SessionExpiryInSeconds. Vi rekommenderar att du anger värdet för SessionExpiryInSeconds till en kort period (1 200 sekunder), medan värdet för KeepAliveInDays kan anges till en relativt lång period (30 dagar), enligt följande exempel:
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<UserJourneyBehaviors>
<SingleSignOn Scope="Tenant" KeepAliveInDays="30" />
<SessionExpiryType>Absolute</SessionExpiryType>
<SessionExpiryInSeconds>1200</SessionExpiryInSeconds>
</UserJourneyBehaviors>
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="email" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="sub"/>
<OutputClaim ClaimTypeReferenceId="identityProvider" />
<OutputClaim ClaimTypeReferenceId="tenantId" AlwaysUseDefaultValue="true" DefaultValue="{Policy:TenantObjectId}" />
</OutputClaims>
<SubjectNamingInfo ClaimType="sub" />
</TechnicalProfile>
</RelyingParty>
Logga ut
När du vill logga ut användaren från programmet räcker det inte att rensa programmets cookies eller på annat sätt avsluta sessionen med användaren. Du måste omdirigera användaren till Azure AD B2C för att logga ut. Annars kanske användaren kan autentisera till dina program igen utan att ange sina autentiseringsuppgifter igen.
Vid en utloggningsbegäran, Azure AD B2C:
- Ogiltigförklarar den Azure AD B2C-cookiebaserade sessionen.
- Försök att logga ut från federerade identitetsprovidrar.
- Ogiltigförklarar den Azure AD B2C-cookiebaserade sessionen.
- Försök att logga ut från federerade identitetsprovidrar:
- OpenId Anslut – Om identitetsproviderns välkända konfigurationsslutpunkt anger en
end_session_endpoint
plats. Utloggningsbegäran skickar inte parameternid_token_hint
. Om den federerade identitetsprovidern kräver den här parametern misslyckas utloggningsbegäran. - OAuth2 – Om identitetsproviderns metadata innehåller
end_session_endpoint
platsen. - SAML – Om metadata för identitetsprovidern innehåller
SingleLogoutService
platsen.
- OpenId Anslut – Om identitetsproviderns välkända konfigurationsslutpunkt anger en
- Du kan också logga ut från andra program. Mer information finns i avsnittet Enkel utloggning .
Kommentar
Du kan inaktivera utloggningen från federerade identitetsprovidrar genom att ange metadata för identitetsproviderns tekniska profil SingleLogoutEnabled
till false
.
Utloggningen rensar användarens tillstånd för enkel inloggning med Azure AD B2C, men det kanske inte loggar ut användaren från deras session för social identitetsprovider. Om användaren väljer samma identitetsprovider under en efterföljande inloggning kan de autentiseras igen utan att ange sina autentiseringsuppgifter. Om en användare vill logga ut från programmet betyder det inte nödvändigtvis att de vill logga ut från sitt Facebook-konto. Men om lokala konton används avslutas användarens session korrekt.
Enkel utloggning
När du omdirigerar användaren till azure AD B2C-utloggningsslutpunkten (för både OAuth2 och OpenID Anslut) eller skickar en LogoutRequest
(för SAML) rensar Azure AD B2C användarens session från webbläsaren. Användaren kan dock fortfarande vara inloggad i andra program som använder Azure AD B2C för autentisering. För att logga ut användaren från alla program, som har en aktiv session, stöder Azure AD B2C enkel utloggning, även kallat enkel utloggning (SLO).
Under utloggningen skickar Azure AD B2C samtidigt en HTTP-begäran till den registrerade utloggnings-URL:en för alla program som användaren för närvarande är inloggad på.
Konfigurera din anpassade princip
För att stödja enkel utloggning måste token utfärdarens tekniska profiler för både JWT och SAML ange:
- Protokollnamnet, till exempel
<Protocol Name="OpenIdConnect" />
- Referensen till den tekniska sessionsprofilen, till exempel
UseTechnicalProfileForSessionManagement ReferenceId="SM-jwt-issuer" />
.
I följande exempel visas utfärdare av JWT- och SAML-token med enkel utloggning:
<ClaimsProvider>
<DisplayName>Local Account SignIn</DisplayName>
<TechnicalProfiles>
<!-- JWT Token Issuer -->
<TechnicalProfile Id="JwtIssuer">
<DisplayName>JWT token Issuer</DisplayName>
<Protocol Name="OpenIdConnect" />
<OutputTokenFormat>JWT</OutputTokenFormat>
...
<UseTechnicalProfileForSessionManagement ReferenceId="SM-jwt-issuer" />
</TechnicalProfile>
<!-- Session management technical profile for OIDC based tokens -->
<TechnicalProfile Id="SM-jwt-issuer">
<DisplayName>Session Management Provider</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.OAuthSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>
<!--SAML token issuer-->
<TechnicalProfile Id="Saml2AssertionIssuer">
<DisplayName>SAML token issuer</DisplayName>
<Protocol Name="SAML2" />
<OutputTokenFormat>SAML2</OutputTokenFormat>
...
<UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuer" />
</TechnicalProfile>
<!-- Session management technical profile for SAML based tokens -->
<TechnicalProfile Id="SM-Saml-issuer">
<DisplayName>Session Management Provider</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
Konfigurera ditt program
För att ett program ska kunna delta i enkel inloggning:
- För SAML-tjänstleverantörer konfigurerar du programmet med SingleLogoutService-platsen i dess SAML-metadatadokument. Du kan också konfigurera appregistreringen
logoutUrl
. Mer information finns i ange utloggnings-URL:en. - För OpenID-Anslut- eller OAuth2-program anger du attributet för
logoutUrl
ditt appregistreringsmanifest. Så här konfigurerar du utloggnings-URL:en:- På Menyn Azure AD B2C väljer du Appregistreringar.
- Välj din programregistrering.
- Under Hantera väljer du Autentisering.
- Under URL:en för utloggning i Front-channel konfigurerar du din utloggnings-URL.
Hantera begäranden om enkel utloggning
När Azure AD B2C tar emot utloggningsbegäran använder den en HTML-iframe för frontkanal för att skicka en HTTP-begäran till den registrerade utloggnings-URL:en för varje deltagande program som användaren för närvarande är inloggad på. Observera att programmet som utlöser utloggningsbegäran får det här utloggningsmeddelandet. Dina program måste svara på utloggningsbegäran genom att rensa programsessionen som identifierar användaren.
- För OpenID-Anslut- och OAuth2-program skickar Azure AD B2C en HTTP GET-begäran till den registrerade utloggnings-URL:en.
- För SAML-program skickar Azure AD B2C en SAML-utloggningsbegäran till den registrerade utloggnings-URL:en.
När Azure AD B2C meddelar alla program om utloggningen fortsätter det att göra något av följande:
- För OpenID-Anslut- eller OAuth2-program omdirigeras användaren till den begärda
post_logout_redirect_uri
, inklusive den (valfria)state
parametern som anges i den första begäran. Till exempelhttps://contoso.com/logout?state=foo
. - För SAML-program skickar den ett SAML-utloggningssvar via HTTP POST till programmet som ursprungligen skickade utloggningsbegäran.
Skydda omdirigeringen av utloggning
Efter utloggningen omdirigeras användaren till den URI som anges i parametern post_logout_redirect_uri
, oavsett vilka svars-URL:er som du anger för programmet. Men om ett giltigt id_token_hint
skickas och Kräv ID-token i utloggningsbegäranden är aktiverat verifierar Azure AD B2C att värdet post_logout_redirect_uri
för matchar en av programmets konfigurerade omdirigerings-URI:er innan omdirigeringen utförs. Om ingen matchande svars-URL har konfigurerats för programmet visas ett felmeddelande och användaren omdirigeras inte.
Så här kräver du en ID-token i utloggningsbegäranden:
- Logga in på Azure-portalen.
- Om du har åtkomst till flera klienter väljer du ikonen Inställningar på den översta menyn för att växla till din Azure AD B2C-klient från menyn Kataloger + prenumerationer.
- Välj Alla tjänster på menyn högst upp till vänster i Azure-portalen och sök efter och välj Azure AD B2C.
- Välj Användarflöden.
- Öppna användarflödet som du skapade tidigare.
- Välj Egenskaper.
- Aktivera Kräv ID-token i utloggningsbegäranden.
Om du vill kräva en ID-token i utloggningsbegäranden lägger du till elementet UserJourneyBehaviors i elementet RelyingParty . Ange sedan EnforceIdTokenHintOnLogout för SingleSignOn-elementet till true
. Mer information finns i livedemon. Elementet UserJourneyBehaviors bör se ut så här:
<UserJourneyBehaviors>
<SingleSignOn Scope="Tenant" EnforceIdTokenHintOnLogout="true"/>
</UserJourneyBehaviors>
Så här konfigurerar du programmets utloggnings-URL:
- Välj Appregistreringar och välj sedan ditt program.
- Välj Autentisering.
- I textrutan Utloggnings-URL skriver du omdirigerings-URI:n för utloggning efter utloggning och väljer sedan Spara.
Nästa steg
- Lär dig hur du konfigurerar token i Azure AD B2C.