Penyedia sesi akses menyeluruh di Azure Active Directory B2C

Dalam artikel Konfigurasikan perilaku sesi di Azure Active Directory B2C, kami menjelaskan manajemen sesi untuk kebijakan kustom B2C Azure AD Anda. Artikel ini menjelaskan cara mengonfigurasi lebih lanjut akses menyeluruh (SSO) dari setiap profil teknis individual dalam kebijakan kustom Anda.

Misalnya, Anda mengonfigurasi kebijakan untuk SSO di seluruh penyewa, tetapi Anda ingin selalu melakukan langkah multifaktor terlepas dari sesi SSO yang aktif. Anda dapat mencapai perilaku ini dengan mengonfigurasi penyedia sesi profil teknis multifaktor.

Anda dapat menerapkan penyedia sesi ke dua alur:

  • Masuk dari awal
    • Saat pengguna masuk untuk pertama kalinya, tidak ada sesi. Setiap profil teknis yang menggunakan penyedia sesi menjadi peserta sesi.
    • Penyedia sesi dapat menulis klaim ke cookie sesi.
  • Masuk berikutnya
    • Ketika pengguna memiliki sesi aktif, klaim yang merupakan bagian dari cookie sesi dibacakan ke dalam tas klaim.
    • Klaim yang merupakan bagian dari cookie sesi tidak dapat diperbarui.
    • Penyedia sesi dapat mengeluarkan klaim tambahan ke dalam tas klaim, menunjukkan bahwa profil teknis ini dijalankan dalam kondisi SSO.
    • Profil teknis dapat dilewati.

Bergantung pada penyedia manajemen sesi yang dipilih untuk profil teknis tertentu, perilaku sesi dapat aktif atau ditekan. Daftar berikut menyajikan beberapa dari banyak contoh yang mungkin menggunakan penyedia sesi:

  • Mencegah atau melaksanakan interupsi antarmuka pengguna selama masuk berikutnya (SSO).
  • Harap ingat penyedia identitas yang dipilih selama logon berikutnya (SSO).
  • Kurangi jumlah operasi baca ke direktori selama logon berikutnya (SSO).
  • Lacak sesi penyedia identitas sosial untuk keluar dari penyedia identitas.
  • Lacak aplikasi pihak yang mengandalkan login untuk sign-out tunggal.

Penyedia sesi

Ada lima penyedia sesi yang tersedia untuk mengelola bagaimana profil teknis menangani sesi SSO. Anda harus memilih penyedia sesi yang paling tepat saat mengonfigurasi profil teknis Anda.

Tabel berikut menunjukkan penyedia sesi mana yang akan digunakan tergantung pada jenis profil teknis yang ingin Anda kelola. Beberapa penyedia sesi mengizinkan klaim membaca dan menulis untuk cookie sesi.

Penyedia sesi Jenis profil teknis yang berlaku Tujuan Tulis klaim Baca klaim
DefaultSSOSessionProvider Dinyatakan sendiri, ID Microsoft Entra, autentikasi multifaktor Microsoft Entra, Transformasi klaim Lewati eksekusi profil teknis. Ya Ya
ExternalLoginSSOSessionProvider Penyedia identitas OAuth1, Penyedia identitas Oauth2, Penyedia identitas Koneksi OpenID, penyedia identitas SAML Percepat halaman pemilihan penyedia identitas. Melakukan single-logout. Ya Ya
OAuthSSOSessionProvider Penerbit token JWT Mengelola sesi antara OAuth2 atau OpenId Koneksi mengandalkan pihak dan Azure AD B2C. Melakukan single-logout. Tidak Tidak
SamlSSOSessionProvider Penerbit token SAML Mengelola sesi antara pihak yang mengandalkan SAML dan Azure AD B2C. Melakukan single-logout. Tidak Tidak
NoopSSOSessionProvider Apa pun Tekan profil teknis apa pun agar tidak menjadi bagian dari sesi. Tidak Tidak

Diagram berikut menunjukkan jenis sesi yang digunakan oleh Azure AD B2C.

Diagram memperlihatkan jenis Azure AD B2C penyedia sesi.

Mereferensikan penyedia sesi

Untuk menggunakan penyedia sesi di profil teknis Anda:

  1. Buat profil teknis manajemen sesi yang sesuai. Perhatikan, paket awal Azure AD B2C menyertakan profil teknis manajemen sesi yang paling umum. Anda dapat mereferensikan profil teknis manajemen sesi yang ada jika berlaku.

    Cuplikan XML berikut menunjukkan profil teknis manajemen sesi paket awal SM-AAD. Sesi yang disediakan adalah jenis 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. Referensikan profil teknis manajemen sesi dalam profil teknis Anda. Dengan demikian, Anda mengontrol perilaku profil teknis itu selama masuk berikutnya (SSO).

    Untuk mereferensikan profil teknis manajemen sesi dari profil teknis Anda, tambahkan elemen UseTechnicalProfileForSessionManagement. Contoh berikut menunjukkan penggunaan SM-AAD profil teknis manajemen sesi. Ubah ReferenceId ke ID profil teknis manajemen sesi Anda.

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

Penting

Ketika profil teknis tidak mereferensikan penyedia manajemen sesi apa pun, penyedia sesi DefaultSSOSessionProvider diterapkan, yang dapat menyebabkan perilaku tak terduga.

Catatan

Selama penyegaran aliran token, penyedia manajemen sesi tidak dipanggil. Semua upaya untuk mengeluarkan token akses baru adalah salinan dari klaim asli yang dikeluarkan.

Mengelola klaim sesi

Kontrol profil teknis manajemen sesi yang mengklaim dapat dibaca, ditulis atau dikeluarkan selama eksekusi kebijakan kustom.

Dalam profil teknis manajemen sesi, gunakan PersistedClaims dan OutputClaims elemen untuk mengelola klaim.

  • Klaim yang bertahan - Klaim yang dapat ditulis ke cookie sesi.
    • Untuk klaim yang akan ditulis ke dalam cookie sesi, harus menjadi bagian dari tas klaim saat ini.
    • Semua klaim yang ditulis secara otomatis kembali selama masuk berikutnya (akses menyeluruh). Anda tidak perlu menentukan klaim output.
  • Klaim output - Klaim tambahan yang dapat output ke tas klaim selama masuk berikutnya (akses menyeluruh). Karena klaim output tidak dikembalikan dari sesi, Anda harus menetapkan nilai default.

Elemen klaim yang bertahan dan output ditunjukkan dalam cuplikan XML berikut:

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

Penyedia pengelolaan sesi DefaultSSOSessionProvider dan ExternalLoginSSOSessionProvider dapat dikonfigurasi untuk mengelola klaim, sehingga selama:

  • Masuk dari awal
    • Elemen PersistedClaims akan menulis klaim ke dalam cookie sesi. Klaim yang bertahan tidak dapat ditulis ulang.
  • Masuk berikutnya
    • Setiap klaim yang ditulis ke cookie sesi, akan dihasilkan ke dalam tas klaim, tersedia untuk digunakan dalam langkah orkestrasi berikutnya.
    • Elemen OutputClaims akan mengeluarkan klaim statis ke dalam tas klaim. Gunakan atribut DefaultValue untuk mengatur nilai klaim output.

DefaultSSOSessionProvider

Penyedia sesi DefaultSSOSessionProvider dapat dikonfigurasi untuk mengelola klaim selama masuk berikutnya (akses menyeluruh), dan memungkinkan profil teknis untuk dilewati. DefaultSSOSessionProvider harus digunakan untuk bertahan dan mengeluarkan klaim yang diperlukan oleh langkah orkestrasi berikutnya yang tidak akan diperoleh sebaliknya selama masuk berikutnya (akses menyeluruh). Misalnya, klaim yang mungkin diperoleh dari membaca objek pengguna dari direktori.

Profil teknis berikut SM-AAD adalah jenis DefaultSSOSessionProvider penyedia sesi. Profil SM-AAD teknis dapat ditemukan di paket kebijakan pemula .

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

Misalnya, SM-AADprofil teknis manajemen sesi menggunakan DefaultSSOSessionProvider penyedia sesi. Ini akan berlaku sebagai berikut bila diterapkan pada SelfAsserted-LocalAccountSignin-Email profil teknis dari paket kebijakan pemula :

  • Masuk dari awal
    • signInNameakan ditulis ke dalam cookie sesi, karena profil teknis manajemen sesi (SM-AAD) dikonfigurasi dengan signInName untuk dipertahankan, dan profil teknis yang merujuk SM-AAD berisi OutputClaim untuk signInName. Perilaku ini berlaku untuk semua klaim yang memenuhi pola ini.
  • Masuk berikutnya
    • Profil teknis dilewati dan pengguna tidak akan melihat halaman masuk.
    • Tas klaim akan berisi signInName nilai dari cookie sesi, yang bertahan pada masuk baru, dan klaim lain yang memenuhi pola untuk bertahan ke dalam cookie sesi.
    • Profil teknis manajemen sesi mengembalikan objectIdFromSession klaim karena Output klaim penyedia sesi diproses selama logon berikutnya (akses menyeluruh). Dalam hal ini, objectIdFromSession klaim yang ada di tas klaim, menunjukkan bahwa klaim pengguna berasal dari cookie sesi karena akses menyeluruh.

ExternalLoginSSOSessionProvider

Penyedia sesi ExternalLoginSSOSessionProvider digunakan untuk melompati layar "pilihan penyedia identitas" dan keluar dari penyedia identitas gabungan. Biasanya dirujuk dalam profil teknis yang dikonfigurasi untuk IdP federasi, seperti Facebook atau ID Microsoft Entra.

  • Masuk dari awal
    • Elemen PersistedClaims akan menulis klaim ke dalam cookie sesi. Klaim yang bertahan tidak dapat ditulis ulang.
  • Masuk berikutnya
    • Setiap klaim yang ditulis untuk cookie sesi, akan dihasilkan ke dalam tas klaim, tersedia untuk digunakan dalam langkah orkestrasi berikutnya.
    • Elemen OutputClaims akan mengeluarkan klaim statis ke dalam tas klaim. Gunakan atribut DefaultValue yang mengatur nilai klaim.
    • Ketika profil teknis, yang mereferensikan profil teknis manajemen sesi, berisi OutputClaim, yang telah dipertahankan ke dalam cookie sesi, maka profil teknis ini akan dilewati.

Profil teknis berikut SM-SocialLogin adalah jenis ExternalLoginSSOSessionProvider penyedia sesi. Profil SM-SocialLogin teknis dapat ditemukan di paket kebijakan pemula .

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

Klaim AlternativeSecurityId dihasilkan saat pengguna masuk dengan penyedia identitas eksternal. Mewakili pengenal unik pengguna penyedia identitas eksternal. Klaim AlternativeSecurityId tersebut tetap demikian sehingga pada tanda tunggal dalam perjalanan, profil pengguna dapat dibaca dari direktori tanpa interaksi dengan penyedia identitas federasi.

Untuk konfigurasikan penyedia sesi eksternal, tambahkan referensi ke SM-SocialLogin dari profil teknis OAuth1, OAuth2, atau OpenID Connect Anda. Misalnya, Facebook-OAUTH menggunakan SM-SocialLogin profil teknis pengelolaan sesi. Untuk informasi selengkapnya, lihat paket kebijakan pemula.

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

OAuthSSOSessionProvider

Penyedia sesi OAuthSSOSessionProvider digunakan untuk mengelola sesi Azure AD B2C antara pihak yang mengandalkan OAuth2 atau OpenId Connect dan Azure AD B2C. Azure AD B2C mendukung Single sign-out, juga dikenal sebagai Single Log-Out (SLO). Saat pengguna keluar melalui titik akhir keluar Azure AD B2C, Azure AD B2C akan menghapus cookie sesi pengguna dari browser. Namun, pengguna mungkin masih masuk ke aplikasi lain yang menggunakan Azure AD B2C untuk autentikasi.

Jenis penyedia sesi ini memungkinkan Azure AD B2C melacak semua aplikasi OAuth2 atau OpenId Connect yang digunakan pengguna untuk masuk. Selama keluar dari satu aplikasi, Azure AD B2C akan mencoba memanggil logout titik akhir dari semua aplikasi masuk lainnya yang diketahui. Fungsi ini dibangun untuk penyedia sesi. Tidak ada klaim bertahan atau output yang tersedia untuk dikonfigurasi. Profil teknis SM-jwt-issuer berikut adalah jenis OAuthSSOSessionProvider penyedia sesi.

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

Profil teknis SM-jwt-issuer dirujuk dari JwtIssuer profil teknis:

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

SamlSSOSessionProvider

Penyedia sesi SamlSSOSessionProvider digunakan untuk mengelola perilaku sesi dengan penyedia identitas SAML gabungan atau aplikasi pihak yang mengandalkan SAML dan Azure AD B2C.

Manajemen sesi penyedia identitas SAML

Saat Anda mereferensikan penyedia sesi SamlSSOSessionProvider dari sesi penyedia identitas SAML, RegisterServiceProviders harus diatur ke false.

Profil teknis SM-Saml-idp berikut adalah jenis SamlSSOSessionProvider penyedia sesi:

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

Untuk menggunakan SM-Saml-idp profil teknis pengelolaan sesi, tambahkan referensi ke profil teknis penyedia identitas SAML Anda. Misalnya, penyedia identitas SAML AD-FSContoso-SAML2 menggunakan SM-Saml-idp profil teknis pengelolaan sesi.

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

Manajemen sesi penyedia layanan SAML

Saat mereferensikan penyedia sesi SamlSSOSessionProvider untuk mengelola sesi pihak yang mengandalkan SAML, RegisterServiceProviders harus disetel ke true. Keluar dari sesi SAML memerlukan SessionIndex dan NameID untuk diselesaikan.

Profil teknis SM-Saml-issuer berikut adalah jenis SamlSSOSessionProvider penyedia sesi:

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

Untuk menggunakan SM-Saml-issuer profil teknis pengelolaan sesi, tambahkan referensi ke profil teknis penerbit token SAML Anda. Misalnya, Saml2AssertionIssuerprofil teknis manajemen sesi menggunakan SM-Saml-issuer penyedia sesi.

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

Metadata

Atribut Diperlukan Deskripsi
IncludeSessionIndex Tidak Saat ini tidak digunakan, dapat diabaikan.
RegisterServiceProviders Tidak Menunjukkan bahwa penyedia harus mendaftarkan semua penyedia layanan SAML yang telah mengeluarkan pernyataan. Nilai yang mungkin: true (default), atau false.

NoopSSOSessionProvider

Penyedia sesi NoopSSOSessionProvider digunakan untuk menekan perilaku akses menyeluruh. Profil teknis yang menggunakan jenis penyedia sesi ini akan selalu diproses, bahkan saat pengguna memiliki sesi yang aktif. Jenis penyedia sesi ini dapat berguna untuk memaksa profil teknis tertentu untuk selalu berjalan, misalnya:

  • Transformasi klaim - Untuk membuat, atau mengubah klaim yang nantinya digunakan untuk menentukan langkah orkestrasi mana yang akan diproses atau dilewati.
  • Restful - Ambil data yang diperbarui dari layanan Restful setiap kali kebijakan dijalankan. Anda juga dapat menggunakan Restful untuk logging dan audit yang diperpanjang.
  • Self-asserted - Memaksa pengguna untuk memberikan data setiap kali kebijakan berjalan. Misalnya, verifikasi email dengan kode sandi satu kali, atau minta persetujuan pengguna.
  • Phonefactor - Memaksa pengguna untuk melakukan autentikasi multifaktor sebagai bagian dari "meningkatkan autentikasi" bahkan selama masuk berikutnya (akses menyeluruh).

Jenis penyedia sesi ini tidak mempertahankan klaim ke cookie sesi pengguna. Profil teknis SM-Noop berikut adalah jenis NoopSSOSessionProvider penyedia sesi. Profil SM-Noop teknis dapat ditemukan di paket kebijakan pemula .

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

Untuk menekan tanda tunggal pada perilaku profil teknis, tambahkan referensi ke SM-Noop profil teknis. Misalnya, AAD-Common menggunakan SM-Noop profil teknis pengelolaan sesi. Untuk informasi selengkapnya, lihat paket kebijakan pemula.

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

Langkah berikutnya

Pelajari bagaimana cara mengonfigurasi perilaku sesi.