Dela via


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 en enskild teknisk profil i din anpassade princip.

Du kan till exempel konfigurera din princip för klientomfattande enkel inloggning, 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 sessionsprovidrar 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 anger att den här tekniska profilen utfö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 identitetsprovider.
  • Spåra loggade i förlitande partprogram 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äs- och skrivanspråk till sessionscookien.

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

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

Diagram som visar Azure AD B2C-typer av sessionsproviders.

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ämpliga. 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 tillämpligt.

    Följande XML-kodfragment visar startpaketets SM-AAD tekniska profil för sessionshantering. Sessionen som anger är typen av 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.

Kommentar

Under ett flöde för uppdateringstoken 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 körning av anpassad princip.

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>

Sessionshanteringsprovidrar 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 ut 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 behövs av efterföljande orkestreringssteg som annars inte erhålls under efterföljande inloggningar (enkel inloggning). Till exempel anspråk som kan hämtas från att läsa 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 sessionscookien eftersom den tekniska profilen för sessionshantering (SM-AAD) har konfigurerats 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 bevarades vid ny inloggning, och alla 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 anger 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. Den 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 i 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å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 som anger värdet för anspråket.
    • 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 identitetsproviderns unika identifierare. Anspråket AlternativeSecurityId bevaras så att användarens profil vid enkel inloggning kan läsas från katalogen utan interaktion med den federerade identitetsprovidern.

Om du vill konfigurera den externa sessionsprovidern lägger du till en referens till SM-SocialLogin de tekniska profilerna OAuth1, OAuth2 eller OpenID Connect. Till exempel Facebook-OAUTH använder den tekniska profilen SM-SocialLogin sessionshantering. 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 förlitande OAuth2- eller OpenId Connect-parten och Azure AD B2C. Azure AD B2C stöder enkel utloggning, även kallat enkel utloggning (SLO). När en användare loggar ut via azure AD B2C-utloggningsslutpunkten rensar Azure AD B2C användarens sessionscookie från webbläsaren. Användaren kan dock fortfarande vara inloggad i 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 loggade in på. Under utloggningen av ett program försöker Azure AD B2C anropa slutpunkterna logout för alla andra kända inloggade program. Den här funktionen är inbyggd i sessionsprovidern. Det finns inga beständiga anspråk eller utdataanspråk som ska 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 den vara inställd på false.

Följande SM-Saml-idp tekniska profil är typ 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-identitetsprovidern Contoso-SAML2 använder till exempel den tekniska profilen SM-Saml-idp för sessionshantering.

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

Saml-tjänstproviderns sessionshantering

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

Följande SM-Saml-issuer tekniska profil är typ 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 tekniska profilen använder till exempel Saml2AssertionIssuer den tekniska profilen SM-Saml-issuer för sessionshantering.

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

Metadata

Attribut Obligatoriskt Beskrivning
IncludeSessionIndex Nej Används inte för närvarande, kan ignoreras.
RegisterServiceProviders Nej Anger att providern ska registrera alla SAML-tjänstleverantörer som har utfärdat ett intyg. 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 när användaren har en aktiv session. Den här typen av sessionsprovider kan vara användbar för att tvinga vissa tekniska profiler att alltid köras, till exempel:

  • Anspråksomvandling – För att 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 vilsam tjänst varje gång principen körs. Du kan också anropa en Restful för utökad loggning och granskning.
  • Självbestämt – Tvinga användaren att ange data varje gång principen körs. Kontrollera till exempel e-postmeddelanden med engångslösenkod eller fråga användarens 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 beteende 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 SM-Noop sessionshantering. 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.