Sessionsprovidrar för enkel inloggning i Azure Active Directory B2C

I artikeln Konfigurera sessionsbeteende i Azure Active Directory B2C beskriver vi sessionshanteringen för din anpassade Azure AD B2C-princip. Den här artikeln beskriver hur du ytterligare konfigurerar beteendet för enkel inloggning (SSO) för enskilda tekniska profiler i din anpassade princip.

Du kan till exempel konfigurera principen för enkel inloggning för hela klientorganisationen, men du vill alltid utföra multifaktorsteget oavsett en aktiv SSO-session. Du kan uppnå det här beteendet genom att konfigurera sessionsprovidern för den tekniska multifaktorprofilen.

Du kan tillämpa sessionsproviders på två flöden:

  • Ny inloggning
    • När användaren loggar in för första gången finns det ingen session. Alla tekniska profiler som använder en sessionsprovider blir sessionsdeltagare.
    • Sessionsprovidern kan skriva anspråk till sessionscookien.
  • Efterföljande inloggningar
    • När användaren har en aktiv session läss anspråk som ingår i sessionscookien in i anspråkspåsen.
    • Anspråk som ingår i sessionscookien kan inte uppdateras.
    • Sessionsprovidern kan utfärda extra anspråk i anspråkspåsen, vilket indikerar att den här tekniska profilen kördes under SSO-villkor.
    • Den tekniska profilen kan hoppas över.

Beroende på vilken sessionshanteringsprovider som valts för en viss teknisk profil kan sessionsbeteendet vara aktivt eller undertryckt. I följande lista visas några av de många möjliga exemplen med sessionsprovidrar:

  • Förhindra eller framtvinga avbrott i användargränssnittet under efterföljande inloggningar (SSO).
  • Kom ihåg den valda identitetsprovidern under efterföljande inloggningar (SSO).
  • Minska antalet läsåtgärder i katalogen under efterföljande inloggningar (SSO).
  • Spåra sessioner för social identitetsprovider för att utföra utloggning av identitetsprovidern.
  • Spåra inloggade program för förlitande part för enkel utloggning.

Sessionsprovidrar

Det finns fem sessionsprovidrar tillgängliga för att hantera hur en teknisk profil hanterar SSO-sessionen. Du måste välja den lämpligaste sessionsprovidern när du konfigurerar din tekniska profil.

I följande tabell visas vilken sessionsprovider som ska användas beroende på vilken typ av teknisk profil du vill hantera. Vissa sessionsprovidrar tillåter läsning och skrivning av anspråk till sessionscookien.

Sessionsprovider Tillämpliga tekniska profiltyper Syfte Skriva anspråk Läs anspråk
DefaultSSOSessionProvider Självstyrt, Microsoft Entra-ID, Microsoft Entra multifaktorautentisering, anspråkstransformering Hoppar över körning av teknisk profil. Ja Yes
ExternalLoginSSOSessionProvider OAuth1-identitetsprovider, Oauth2-identitetsprovider, OpenID Connect-identitetsprovider, SAML-identitetsprovider Påskynda sidan för val av identitetsprovider. Utför enkel utloggning. Ja Yes
OAuthSSOSessionProvider JWT-tokenutfärdare Hanterar session mellan OAuth2- eller OpenId Connect-förlitande part och Azure AD B2C. Utför enkel utloggning. Inga Inga
SamlSSOSessionProvider SAML-tokenutfärdare Hanterar session mellan SAML-förlitande part och Azure AD B2C. Utför enkel utloggning. Inga Inga
NoopSSOSessionProvider Valfri Förhindra att någon teknisk profil ingår i sessionen. Inga Inga

Följande diagram visar de typer av sessioner som används av Azure AD B2C.

Diagram som visar Azure AD B2C-typer av sessionsprovidrar.

Referera till en sessionsprovider

Så här använder du en sessionsprovider i din tekniska profil:

  1. Skapa en teknisk profil för sessionshantering av lämpligt. Observera att Azure AD B2C-startpaketet innehåller de vanligaste tekniska profilerna för sessionshantering. Du kan referera till en befintlig teknisk profil för sessionshantering om det är tillämpligt.

    Följande XML-kodfragment visar den tekniska profilen för sessionshantering i startpaketet SM-AAD . Sessionstypen är typen DefaultSSOSessionProvider.

    <TechnicalProfile Id="SM-AAD">
      <DisplayName>Session Mananagement Provider</DisplayName>
      <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <PersistedClaims>
        <PersistedClaim ClaimTypeReferenceId="objectId" />
        <PersistedClaim ClaimTypeReferenceId="signInName" />
        <PersistedClaim ClaimTypeReferenceId="authenticationSource" />
        <PersistedClaim ClaimTypeReferenceId="identityProvider" />
        <PersistedClaim ClaimTypeReferenceId="newUser" />
        <PersistedClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" />
      </PersistedClaims>
      <OutputClaims>
        <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true" />
      </OutputClaims>
    </TechnicalProfile>
    
  2. Referera till den tekniska profilen för sessionshantering i din tekniska profil. Genom att göra det kontrollerar du beteendet för den tekniska profilen under efterföljande inloggningar (SSO).

    Om du vill referera till en teknisk profil för sessionshantering från din tekniska profil lägger du till elementet UseTechnicalProfileForSessionManagement . I följande exempel visas användningen av SM-AAD teknisk profil för sessionshantering. ReferenceId Ändra till ID för din tekniska profil för sessionshantering.

    <TechnicalProfile Id="{Technical-profile-ID}">
      ...
      <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
    </TechnicalProfile>
    

Viktigt

När en teknisk profil inte refererar till någon sessionshanteringsprovider tillämpas StandardSSOSessionProvider-sessionsprovidern , vilket kan orsaka oväntat beteende.

Anteckning

Under ett uppdateringstokenflöde anropas inte sessionshanteringsprovidrar. Alla försök att utfärda en ny åtkomsttoken är en kopia av de ursprungliga anspråk som utfärdats.

Hantera sessionsanspråk

De tekniska profilerna för sessionshantering styr vilka anspråk som kan läsas, skrivas eller matas ut under den anpassade principkörningen.

I den tekniska profilen för sessionshantering använder PersistedClaims du och OutputClaims element för att hantera anspråken.

  • Beständiga anspråk – anspråk som kan skrivas till sessionscookien.
    • För att ett anspråk ska skrivas in i sessionscookien måste det vara en del av den aktuella anspråkspåsen.
    • Alla anspråk som skrivs automatiskt returneras under efterföljande inloggningar (enkel inloggning). Du behöver inte ange utdataanspråken.
  • Utdataanspråk – Extra anspråk som kan matas ut till anspråkspåsen under efterföljande inloggningar (enkel inloggning). Eftersom utdataanspråken inte returneras från sessionen måste du ange ett standardvärde.

Elementen persisted och output claims visas i följande XML-kodfragment:

<TechnicalProfile Id="SM-AAD">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true"/>
  </OutputClaims>
</TechnicalProfile>

Sessionshanteringsleverantörerna DefaultSSOSessionProvider och ExternalLoginSSOSessionProvider kan konfigureras för att hantera anspråk, så att under:

  • Ny inloggning
    • Elementet PersistedClaims skriver anspråk i sessionscookien. Beständiga anspråk kan inte skrivas om.
  • Efterföljande inloggningar
    • Varje anspråk som skrivs till sessionscookien kommer att matas in i anspråkspåsen, som kan användas i nästa orkestreringssteg.
    • Elementet OutputClaims matar ut statiska anspråk i anspråkspåsen. DefaultValue Använd attributet för att ange värdet för utdataanspråket.

DefaultSSOSessionProvider

Sessionsprovidern DefaultSSOSessionProvider kan konfigureras för att hantera anspråk under efterföljande inloggningar (enkel inloggning) och tillåta att tekniska profiler hoppas över. DefaultSSOSessionProvider bör användas för att bevara och utfärda anspråk som krävs av efterföljande orkestreringssteg som annars inte hämtas under efterföljande inloggningar (enkel inloggning). Till exempel anspråk som kan hämtas från läsning av användarobjektet från katalogen.

Följande SM-AAD tekniska profil är typ av DefaultSSOSessionProvider sessionsprovider. Den SM-AAD tekniska profilen finns i startpaketet för anpassad princip.

<TechnicalProfile Id="SM-AAD">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.DefaultSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
    <PersistedClaim ClaimTypeReferenceId="signInName" />
    <PersistedClaim ClaimTypeReferenceId="authenticationSource" />
    <PersistedClaim ClaimTypeReferenceId="identityProvider" />
    <PersistedClaim ClaimTypeReferenceId="newUser" />
    <PersistedClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectIdFromSession" DefaultValue="true"/>
  </OutputClaims>
</TechnicalProfile>

Den tekniska profilen SM-AADför sessionshantering använder DefaultSSOSessionProvider till exempel sessionsprovidern. Den fungerar på följande sätt när den tillämpas mot den SelfAsserted-LocalAccountSignin-Email tekniska profilen från startpaketet för anpassad princip:

  • Ny inloggning
    • signInName skrivs till sessionscookie eftersom den tekniska profilen för sessionshantering (SM-AAD) är konfigurerad med signInName för att bevaras och den tekniska profilen som refererar till SM-AAD innehåller en OutputClaim för signInName. Det här beteendet gäller för alla anspråk som uppfyller det här mönstret.
  • Efterföljande inloggningar
    • Den tekniska profilen hoppas över och användaren ser inte inloggningssidan.
    • Anspråkspåsen innehåller signInName värdet från sessionscookien, som sparades vid ny inloggning, och andra anspråk som uppfyllde mönstret för att sparas i sessionscookien.
    • Den tekniska profilen för sessionshantering returnerar anspråket objectIdFromSession eftersom Output anspråk från sessionsprovidern bearbetas under efterföljande inloggningar (enkel inloggning). I det här fallet indikerar anspråket objectIdFromSession som finns i anspråkspåsen att användarens anspråk kommer från sessionscookien på grund av enkel inloggning.

ExternalLoginSSOSessionProvider

Sessionsprovidern ExternalLoginSSOSessionProvider används för att hoppa över skärmen "val av identitetsprovider" och logga ut från en federerad identitetsprovider. Det refereras vanligtvis i en teknisk profil som konfigurerats för en federerad identitetsprovider, till exempel Facebook eller Microsoft Entra-ID.

  • Ny inloggning
    • Elementet PersistedClaims skriver anspråk till sessionscookien. Beständiga anspråk kan inte skrivas om.
  • Efterföljande inloggningar
    • Varje anspråk som skrivs till sessionscookien kommer att matas ut i anspråksuppsättningen, som kan användas i nästa orkestreringssteg.
    • Elementet OutputClaims matar ut statiska anspråk i anspråksuppsättningen. DefaultValue Använd attributet för att ange anspråkets värde.
    • När en teknisk profil, som refererar till en teknisk profil för sessionshantering, innehåller en OutputClaim, som har sparats i sessionscookien, hoppas den tekniska profilen över.

Följande SM-SocialLogin tekniska profil är typ av ExternalLoginSSOSessionProvider sessionsprovider. Den SM-SocialLogin tekniska profilen finns i startpaketet för anpassad princip.

<TechnicalProfile Id="SM-SocialLogin">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.ExternalLoginSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="AlternativeSecurityId" />
  </PersistedClaims>
</TechnicalProfile>

Anspråket AlternativeSecurityId genereras när en användare loggar in med en extern identitetsprovider. Representerar den externa identitetsprovideranvändarens unika identifierare. Anspråket AlternativeSecurityId sparas så att användarens profil kan läsas från katalogen vid enkel inloggning utan interaktion med den federerade identitetsprovidern.

Om du vill konfigurera den externa sessionsprovidern lägger du till en referens till SM-SocialLogin från dina tekniska OAuth1-, OAuth2- eller OpenID Connect-profiler . Till exempel Facebook-OAUTH använder den tekniska profilen sessionshantering SM-SocialLogin . Mer information finns i startpaketet för anpassad princip.

<TechnicalProfile Id="Facebook-OAUTH">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
</TechnicalProfile>

OAuthSSOSessionProvider

Sessionsprovidern OAuthSSOSessionProvider används för att hantera Azure AD B2C-sessioner mellan den OAuth2- eller OpenId Connect-förlitande parten och Azure AD B2C. Azure AD B2C stöder enkel utloggning, även kallat Enkel Log-Out (SLO). När en användare loggar ut via utloggningsslutpunkten Azure AD B2C rensar Azure AD B2C användarens sessionscookie från webbläsaren. Användaren kan dock fortfarande vara inloggad på andra program som använder Azure AD B2C för autentisering.

Med den här typen av sessionsprovider kan Azure AD B2C spåra alla OAuth2- eller OpenId Connect-program som användaren har loggat in på. Under utloggningen av ett program försöker Azure AD B2C anropa logout slutpunkterna för alla andra kända loggade program. Den här funktionen är inbyggd i sessionsprovidern. Det finns inga beständiga anspråk eller utdataanspråk som kan konfigureras. Följande SM-jwt-issuer tekniska profil är typ av OAuthSSOSessionProvider sessionsprovider.

<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>

Den SM-jwt-issuer tekniska profilen refereras från den JwtIssuer tekniska profilen:

<TechnicalProfile Id="JwtIssuer">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-jwt-issuer" />
</TechnicalProfile>

SamlSSOSessionProvider

Sessionsprovidern SamlSSOSessionProvider används för att hantera sessionsbeteendet med federerade SAML-identitetsprovidrar eller SAML-förlitande partprogram och Azure AD B2C.

Sessionshantering för SAML-identitetsprovider

När du refererar till en SamlSSOSessionProvider sessionsprovider från en SAML-identitetsprovidersession RegisterServiceProviders måste anges till false.

Följande SM-Saml-idp tekniska profil är typen av SamlSSOSessionProvider sessionsprovider:

<TechnicalProfile Id="SM-Saml-idp">
  <DisplayName>Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="RegisterServiceProviders">false</Item>
  </Metadata>
</TechnicalProfile>

Om du vill använda den SM-Saml-idp tekniska profilen för sessionshantering lägger du till en referens till din tekniska profil för SAML-identitetsprovidern . AD-FS SAML-identitetsprovidernContoso-SAML2 använder till exempel den tekniska profilen SM-Saml-idp för sessionshantering.

<TechnicalProfile Id="Contoso-SAML2">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-idp" />
</TechnicalProfile>

Sessionshantering för SAML-tjänstleverantör

När du refererar till en SamlSSOSessionProvider sessionsprovider för att hantera en SAML-förlitande partsession måste RegisterServiceProviders anges till true. SAML-sessionsinloggning kräver SessionIndex och NameID för att slutföras.

Följande SM-Saml-issuer tekniska profil är typen av SamlSSOSessionProvider sessionsprovider:

<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>

Om du vill använda den SM-Saml-issuer tekniska profilen för sessionshantering lägger du till en referens till din tekniska profil för SAML-token utfärdare . Den Saml2AssertionIssuer tekniska profilen använder till exempel den tekniska profilen SM-Saml-issuer för sessionshantering.

<TechnicalProfile Id="Saml2AssertionIssuer">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuer" />
</TechnicalProfile>

Metadata

Attribut Krävs Beskrivning
IncludeSessionIndex No Används inte för närvarande, kan ignoreras.
RegisterServiceProviders No Anger att providern ska registrera alla SAML-tjänstleverantörer som har utfärdats en försäkran. Möjliga värden: true (standard) eller false.

NoopSSOSessionProvider

Sessionsprovidern NoopSSOSessionProvider används för att förhindra beteende för enkel inloggning. Tekniska profiler som använder den här typen av sessionsprovider bearbetas alltid, även om användaren har en aktiv session. Den här typen av sessionsprovider kan vara användbar för att tvinga särskilda tekniska profiler att alltid köras, till exempel:

  • Anspråksomvandling – Skapa eller transformera anspråk som senare används för att avgöra vilka orkestreringssteg som ska bearbetas eller hoppa över.
  • Restful – Hämta uppdaterade data från en Restful-tjänst varje gång principen körs. Du kan också anropa en Restful för utökad loggning och granskning.
  • Självstyrt – Tvinga användaren att ange data varje gång principen körs. Du kan till exempel verifiera e-postmeddelanden med engångslösenkod eller be användaren om medgivande.
  • Phonefactor – Tvinga användaren att utföra multifaktorautentisering som en del av en "step up authentication" även under efterföljande inloggningar (enkel inloggning).

Den här typen av sessionsprovider bevarar inte anspråk på användarens sessionscookie. Följande SM-Noop tekniska profil är typ av NoopSSOSessionProvider sessionsprovider. Den SM-Noop tekniska profilen finns i startpaketet för anpassad princip.

<TechnicalProfile Id="SM-Noop">
  <DisplayName>Noop Session Management Provider</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.NoopSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</TechnicalProfile>

Om du vill förhindra beteendet för enkel inloggning för en teknisk profil lägger du till en referens till SM-Noop den tekniska profilen. Till exempel AAD-Common använder den tekniska profilen sessionshantering SM-Noop . Mer information finns i startpaketet för anpassad princip.

<TechnicalProfile Id="AAD-Common">
  ...
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

Nästa steg

Lär dig hur du konfigurerar sessionsbeteende.