UserJourneys

Catatan

Di Azure Active Directory B2C, kebijakan kustom didesain khusus untuk menangani skenario kompleks. Untuk skenario umum, sebaiknya gunakan alur pengguna bawaan. Jika Anda belum melakukannya, pelajari tentang paket starter kebijakan kustom di Mulai dengan kebijakan kustom di Azure Active Directory B2C.

Perjalanan pengguna menentukan jalur eksplisit di mana kebijakan memungkinkan aplikasi pihak yang mengandalkan untuk mendapatkan klaim yang diinginkan untuk pengguna. Pengguna diambil melalui jalur ini untuk memperoleh klaim yang akan disajikan kepada relying party. Dengan kata lain, perjalanan menetapkan logika bisnis tentang apa yang dilalui pengguna akhir saat Kerangka Kerja Pengalaman Identitas Azure AD B2C memproses permintaan tersebut.

Perjalanan pengguna ini dapat dianggap sebagai templat yang tersedia untuk memenuhi kebutuhan inti dari berbagai pihak yang mengandalkan komunitas yang diminati. Perjalanan pengguna memfasilitasi definisi pihak yang mengandalkan bagian dari kebijakan. Kebijakan dapat menentukan beberapa perjalanan. Setiap perjalanan adalah urutan langkah orkestrasi.

Untuk menentukan perjalanan pengguna yang didukung oleh kebijakan, elemen UserJourneys ditambahkan di bawah elemen TrustFrameworkPolicy tingkat atas dari file kebijakan.

<TrustFrameworkPolicy  ...>
  ...
  <UserJourneys>
    ...
  </UserJourneys>
</TrustFrameworkPolicy>

Elemen UserJourneys berisi elemen berikut:

Elemen Kemunculan Deskripsi
UserJourney 1:n Perjalanan yang menetapkan semua konstruksi yang diperlukan untuk alur pengguna yang lengkap.

Elemen UserJourney berisi atribut berikut:

Atribut Wajib Deskripsi
Id Ya Pengidentifikasi perjalanan yang dapat digunakan untuk mereferensikannya dari elemen lain dalam kebijakan. Elemen DefaultUserJourney dari kebijakan pihak berkepentingan mengarah ke atribut ini.
DefaultCpimIssuerTechnicalProfileReferenceId No ID referensi profil teknis penerbit token default. Misalnya, penerbit token JWT, penerbit token SAML, atau kesalahan kustom OAuth2. Jika perjalanan atau sub perjalanan telah memiliki langkah orkestrasi SendClaims lain, atur atribut DefaultCpimIssuerTechnicalProfileReferenceId ke profil teknis penerbit token perjalanan.

Elemen UserJourney berisi elemen berikut:

Elemen Kemunculan Deskripsi
AuthorizationTechnicalProfiles 0:1 Daftar profil teknis otorisasi.
OrchestrationSteps 1:n Urutan orkestrasi yang harus diikuti agar transaksi berhasil. Setiap perjalanan pengguna terdiri dari daftar langkah-langkah orkestrasi yang dijalankan secara berurutan. Jika ada langkah yang gagal, transaksi gagal.

AuthorizationTechnicalProfiles

Misalkan pengguna telah menyelesaikan UserJourney dan memperoleh akses atau token ID. Untuk mengelola sumber daya tambahan, seperti titik akhir UserInfo, pengguna harus diidentifikasi. Untuk memulai proses ini, pengguna harus menunjukkan token akses yang dikeluarkan sebelumnya sebagai bukti bahwa mereka awalnya diautentikasi oleh kebijakan Azure AD B2C yang valid. Token yang valid untuk pengguna harus selalu ada selama proses ini untuk memastikan pengguna diizinkan membuat permintaan ini. Profil teknis otorisasi memvalidasi token yang masuk dan mengekstrak klaim dari token.

Elemen AuthorizationTechnicalProfiles berisi elemen berikut:

Elemen Kemunculan Deskripsi
AuthorizationTechnicalProfile 0:1 Referensi profil teknis yang digunakan untuk mengotorisasi pengguna.

Elemen AuthorizationTechnicalProfile berisi atribut berikut:

Atribut Wajib Deskripsi
ReferenceId Ya Pengidentifikasi profil teknis yang akan dijalankan.

Contoh berikut menunjukkan elemen perjalanan dengan profil teknis otorisasi:

<UserJourney Id="UserInfoJourney" DefaultCpimIssuerTechnicalProfileReferenceId="UserInfoIssuer">
  <Authorization>
    <AuthorizationTechnicalProfiles>
      <AuthorizationTechnicalProfile ReferenceId="UserInfoAuthorization" />
    </AuthorizationTechnicalProfiles>
  </Authorization>
  <OrchestrationSteps>
    <OrchestrationStep Order="1" Type="ClaimsExchange">
     ...

OrchestrationSteps

Perjalanan direpresentasikan sebagai urutan orkestrasi yang harus diikuti untuk transaksi yang berhasil. Jika ada langkah yang gagal, transaksi gagal. Langkah-langkah orkestrasi ini merujuk pada blok penyusun dan penyedia klaim yang diizinkan dalam file kebijakan. Setiap langkah orkestrasi yang bertanggung jawab untuk menampilkan atau merender pengalaman pengguna juga memiliki referensi ke pengenal definisi konten yang sesuai.

Langkah-langkah orkestrasi dapat dieksekusi secara bersyarat berdasarkan prasyarat yang ditentukan dalam elemen langkah orkestrasi. Misalnya, Anda dapat memeriksa untuk melakukan langkah orkestrasi hanya jika ada klaim tertentu, atau jika klaim sama atau tidak dengan nilai yang ditentukan.

Untuk menentukan daftar urutan langkah-langkah orkestrasi, elemen OrchestrationSteps ditambahkan sebagai bagian dari kebijakan. Elemen ini wajib diisi.

<UserJourney Id="SignUpOrSignIn">
  <OrchestrationSteps>
    <OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
      ...

Elemen OrchestrationSteps berisi elemen berikut:

Elemen Kemunculan Deskripsi
OrchestrationStep 1:n Langkah orkestrasi yang teratur.

Elemen OrchestrationStep berisi atribut berikut:

Atribut Wajib Deskripsi
Order Ya Urutan langkah orkestrasi. Nilai Order atribut dimulai pada 1 melalui N. Jadi, jika Anda memiliki 10 langkah dan menghapus langkah kedua, Anda perlu menjumlah ulang langkah-langkah tiga hingga 10 menjadi dua hingga sembilan.
Type Ya Jenis langkah orkestrasi. Nilai yang memungkinkan:
  • ClaimsProviderSelection - Menunjukkan bahwa langkah orkestrasi menghadirkan berbagai penyedia klaim kepada pengguna agar memilih salah satu.
  • CombinedSignInAndSignUp - Menunjukkan bahwa langkah orkestrasi menampilkan halaman masuk penyedia sosial dan akun lokal gabungan.
  • ClaimsExchange - Menunjukkan bahwa langkah orkestrasi bertukar klaim dengan penyedia klaim.
  • GetClaims - Menentukan bahwa langkah orkestrasi harus memproses data klaim yang dikirim ke Azure AD B2C dari pihak yang berkepentingan melalui konfigurasi InputClaims-nya.
  • InvokeSubJourney - Menunjukkan bahwa langkah orkestrasi bertukar klaim dengan sub-perjalanan.
  • SendClaims - Menunjukkan bahwa langkah orkestrasi mengirimkan klaim ke pihak yang mengandalkan dengan token yang diterbitkan oleh penerbit klaim.
ContentDefinitionReferenceId No Pengenal dari definisi konten yang terkait dengan langkah orkestrasi ini. Biasanya pengidentifikasi referensi definisi konten ditentukan dalam profil teknis yang dibuat sendiri. Namun, ada beberapa kasus ketika Azure AD B2C perlu menampilkan sesuatu tanpa profil teknis. Ada dua contoh - jika jenis langkah orkestrasi adalah salah satu dari berikut: ClaimsProviderSelection atau CombinedSignInAndSignUp, Azure AD B2C perlu menampilkan pilihan penyedia identitas tanpa memiliki profil teknis.
CpimIssuerTechnicalProfileReferenceId No Jenis langkah orkestrasi adalah SendClaims. Properti ini menentukan pengidentifikasi profil teknis dari penyedia klaim yang menerbitkan token untuk pihak yang mengandalkan. Jika tidak ada, tidak ada token pihak berkepentingan yang dibuat.

Elemen OrchestrationStep dapat berisi elemen berikut:

Elemen Kemunculan Deskripsi
Prasyarat 0:n Daftar prasyarat yang harus dipenuhi agar langkah orkestrasi dijalankan.
ClaimsProviderSelections 0:n Daftar pilihan penyedia klaim untuk langkah orkestrasi.
ClaimsExchanges 0:n Daftar pertukaran klaim untuk langkah orkestrasi.
JourneyList 0:1 Daftar calon sub perjalanan untuk langkah orkestrasi.

Prasyarat

Langkah-langkah orkestrasi dapat dieksekusi secara bersyarat berdasarkan prasyarat yang ditentukan dalam langkah orkestrasi. Elemen Preconditions berisi daftar prasyarat untuk dievaluasi. Saat evaluasi prasyarat terpenuhi, langkah orkestrasi terkait melompat ke langkah orkestrasi berikutnya.

Azure AD B2C mengevaluasi prasyarat dalam urutan daftar. Prasyarat berbasis pesanan memungkinkan Anda mengatur urutan penerapan prasyarat. Prasyarat pertama yang dipenuhi mengesampingkan semua prasyarat berikutnya. Langkah orkestrasi dijalankan hanya jika semua prasyarat tidak terpenuhi.

Elemen Prasyarat berisi elemen berikut:

Elemen Kemunculan Deskripsi
Prasyarat 1:n Prasyarat untuk dievaluasi.

Prasyarat

Elemen Prakondisi berisi atribut berikut:

Atribut Wajib Deskripsi
Type Ya Jenis pemeriksaan atau kueri yang akan dilakukan untuk prasyarat ini. Nilainya dapat berupa ClaimsExist, yang menetapkan bahwa tindakan harus dilakukan jika klaim tertentu ada di kumpulan klaim pengguna saat ini, atau ClaimEquals, yang menetapkan bahwa tindakan harus dilakukan jika klaim yang ditentukan ada dan nilainya sama dengan nilai yang ditentukan.
ExecuteActionsIf Ya Memutuskan jika prasyarat dianggap terpenuhi. Kemungkinan nilai: true, atau false. Jika nilai diatur ke true, nilai dianggap terpenuhi saat klaim sesuai dengan prasyarat. Jika nilai diatur ke false, nilai dianggap terpenuhi saat klaim tidak sesuai dengan prasyarat.

Elemen Prasyarat berisi elemen berikut:

Elemen Kemunculan Deskripsi
Value 1:2 Pengidentifikasi jenis klaim. Klaim sudah ditentukan di bagian skema klaim di file kebijakan, atau file kebijakan induk. Jika prasyarat adalah jenis ClaimEquals, elemen Value kedua berisi nilai yang akan diperiksa.
Perbuatan 1:1 Tindakan yang harus dilakukan jika evaluasi prasyarat terpenuhi. Nilai yang mungkin: SkipThisOrchestrationStep. Langkah orkestrasi terkait melompat ke yang berikutnya.

Setiap prasyarat mengevaluasi satu klaim. Ada dua jenis prasyarat:

  • ClaimsExist - Menentukan bahwa tindakan harus dilakukan jika klaim yang ditentukan ada di kantong klaim pengguna saat ini.

  • ClaimEquals - Menentukan bahwa tindakan harus dilakukan jika klaim yang ditentukan ada, dan nilainya sama dengan nilai yang ditentukan. Pemeriksaan tersebut melakukan perbandingan ordinal peka huruf besar kecil. Saat memeriksa jenis klaim Boolean, gunakan True, atau False.

    Jika klaim nol atau tidak diinisialisasi, prasyarat diabaikan, baik ExecuteActionsIf adalah true, atau false. Sebagai praktik terbaik, periksa apakah klaim itu ada, dan sama dengan nilai.

Contoh skenario adalah menantang pengguna untuk MFA jika pengguna telah MfaPreference disetel ke Phone. Untuk melakukan logika kondisional ini, periksa apakah klaim MfaPreference ada, dan periksa juga nilai klaim sama dengan Phone. XML berikut menunjukkan bagaimana menerapkan logika ini dengan prasyarat.  

<Preconditions>
  <!-- Skip this orchestration step if MfaPreference doesn't exist. -->
  <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
    <Value>MfaPreference</Value>
    <Action>SkipThisOrchestrationStep</Action>
  </Precondition>
  <!-- Skip this orchestration step if MfaPreference doesn't equal to Phone. -->
  <Precondition Type="ClaimEquals" ExecuteActionsIf="false">
    <Value>MfaPreference</Value>
    <Value>Phone</Value>
    <Action>SkipThisOrchestrationStep</Action>
  </Precondition>
</Preconditions>

Contoh prasyarat

Prasyarat berikut memeriksa apakah objectId pengguna ada. Dalam perjalanan, pengguna telah memilih untuk masuk menggunakan akun lokal. Jika objectId ada, lewati langkah orkestrasi ini.

<OrchestrationStep Order="2" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
      <Value>objectId</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
    <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
  </ClaimsExchanges>
</OrchestrationStep>

Prasyarat berikut memeriksa apakah pengguna masuk dengan akun sosial. Upaya dilakukan untuk menemukan akun pengguna di direktori. Jika pengguna masuk atau mendaftar dengan akun lokal, lewati langkah orkestrasi ini.

<OrchestrationStep Order="3" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
      <Value>authenticationSource</Value>
      <Value>localAccountAuthentication</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="AADUserReadUsingAlternativeSecurityId" TechnicalProfileReferenceId="AAD-UserReadUsingAlternativeSecurityId-NoError" />
  </ClaimsExchanges>
</OrchestrationStep>

Prasyarat dapat memeriksa beberapa prasyarat. Contoh berikut memeriksa apakah 'objectId' atau 'email' ada. Jika kondisi pertama benar, perjalanan akan melompat ke langkah orkestrasi berikutnya.

<OrchestrationStep Order="4" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
      <Value>objectId</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
    <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
      <Value>email</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="SelfAsserted-SocialEmail" TechnicalProfileReferenceId="SelfAsserted-SocialEmail" />
  </ClaimsExchanges>
</OrchestrationStep>

Pemilihan penyedia klaim

Pilihan penyedia klaim memungkinkan pengguna memilih tindakan dari daftar opsi. Pemilihan IdP terdiri dari sepasang dua langkah orkestrasi:

  1. Tombol - Dimulai dengan jenis ClaimsProviderSelection, atau CombinedSignInAndSignUp yang berisi daftar opsi yang dapat dipilih pengguna. Urutan opsi di dalam elemen ClaimsProviderSelections mengontrol urutan tombol yang disajikan kepada pengguna.
  2. Tindakan - Diikuti menurut jenis ClaimsExchange. ClaimsExchange berisi daftar tindakan. Tindakan tersebut merujuk pada profil teknis, seperti OAuth2, OpenID Connect, transformasi klaim, atau penegasan mandiri. Ketika pengguna mengeklik salah satu tombol, tindakan yang sesuai dijalankan.

Elemen ClaimsProviderSelections berisi elemen berikut:

Elemen Kemunculan Deskripsi
ClaimsProviderSelection 1:n Memberikan daftar penyedia klaim yang dapat dipilih.

Elemen ClaimsProviderSelections berisi atribut berikut:

Atribut Wajib Deskripsi
DisplayOption No Mengontrol perilaku kasus ketika satu pilihan penyedia klaim tersedia. Nilai yang memungkinkan: DoNotShowSingleProvider (default), pengguna akan segera dialihkan ke penyedia identitas gabungan. Atau Azure AD B2C ShowSingleProvider menampilkan halaman masuk dengan pilihan penyedia identitas tunggal. Untuk menggunakan atribut ini, versi definisi konten harus urn:com:microsoft:aad:b2c:elements:contract:providerselection:1.0.0 dan di atasnya.

Elemen ClaimsProviderSelection berisi atribut berikut:

Atribut Wajib Deskripsi
TargetClaimsExchangeId No Pengidentifikasi pertukaran klaim, yang dijalankan pada langkah orkestrasi berikutnya dari pemilihan penyedia klaim. Atribut ini atau atribut ValidationClaimsExchangeId harus ditentukan, tetapi bukan keduanya.
ValidationClaimsExchangeId No Pengidentifikasi pertukaran klaim, yang dijalankan dalam langkah orkestrasi saat ini untuk memvalidasi pemilihan penyedia klaim. Atribut ini atau atribut TargetClaimsExchangeId harus ditentukan, tetapi bukan keduanya.

Contoh pemilihan penyedia klaim

Pada langkah orkestrasi berikut, pengguna dapat memilih untuk masuk dengan Facebook, LinkedIn, Twitter, Google, atau akun lokal. Jika pengguna memilih salah satu penyedia identitas sosial, langkah orkestrasi kedua dijalankan dengan pertukaran klaim yang dipilih ditentukan dalam atribut TargetClaimsExchangeId. Langkah orkestrasi kedua mengalihkan pengguna ke penyedia identitas sosial untuk menyelesaikan proses masuk. Jika pengguna memilih untuk masuk dengan akun lokal, Azure AD B2C tetap pada langkah orkestrasi yang sama (halaman pendaftaran atau halaman masuk yang sama) dan melewatkan langkah orkestrasi kedua.

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    <ClaimsProviderSelection TargetClaimsExchangeId="FacebookExchange" />
    <ClaimsProviderSelection TargetClaimsExchangeId="LinkedInExchange" />
    <ClaimsProviderSelection TargetClaimsExchangeId="TwitterExchange" />
    <ClaimsProviderSelection TargetClaimsExchangeId="GoogleExchange" />
    <ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
  </ClaimsProviderSelections>
  <ClaimsExchanges>
  <ClaimsExchange Id="LocalAccountSigninEmailExchange"
        TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
  </ClaimsExchanges>
</OrchestrationStep>


<OrchestrationStep Order="2" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
      <Value>objectId</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
    <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
    <ClaimsExchange Id="GoogleExchange" TechnicalProfileReferenceId="Google-OAUTH" />
    <ClaimsExchange Id="LinkedInExchange" TechnicalProfileReferenceId="LinkedIn-OAUTH" />
    <ClaimsExchange Id="TwitterExchange" TechnicalProfileReferenceId="Twitter-OAUTH1" />
  </ClaimsExchanges>
</OrchestrationStep>

ClaimsExchanges

Elemen ClaimsExchanges berisi elemen berikut:

Elemen Kemunculan Deskripsi
ClaimsExchange 1:n Bergantung pada profil teknis yang digunakan, mengalihkan klien sesuai dengan ClaimsProviderSelection yang dipilih, atau melakukan panggilan server untuk bertukar klaim.

Elemen ClaimsExchange berisi atribut berikut:

Atribut Wajib Deskripsi
Id Ya Pengidentifikasi dari langkah pertukaran klaim. Pengidentifikasi digunakan untuk mereferensikan pertukaran klaim dari langkah pemilihan penyedia klaim dalam kebijakan.
TechnicalProfileReferenceId Ya Pengidentifikasi profil teknis yang akan dijalankan.

JourneyList

Elemen JourneyList berisi elemen berikut:

Elemen Kemunculan Deskripsi
Calon 1:1 Referensi ke sub perjalanan untuk dipanggil.

Calon

Elemen Kandidat berisi atribut berikut:

Atribut Wajib Deskripsi
SubJourneyReferenceId Ya Pengenal dari sub perjalanan yang akan dijalankan.