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:
|
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 |
---|---|---|
Nilai | 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
, atauFalse
.Jika klaim nol atau tidak diinisialisasi, prasyarat diabaikan, baik
ExecuteActionsIf
adalahtrue
, ataufalse
. 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:
- Tombol - Dimulai dengan jenis
ClaimsProviderSelection
, atauCombinedSignInAndSignUp
yang berisi daftar opsi yang dapat dipilih pengguna. Urutan opsi di dalam elemenClaimsProviderSelections
mengontrol urutan tombol yang disajikan kepada pengguna. - 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
Dalam langkah orkestrasi berikut, pengguna dapat memilih untuk masuk dengan Facebook, LinkedIn, X, 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. |