Menentukan profil teknis yang ditegaskan sendiri dalam kebijakan kustom Azure Active Directory B2C
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.
Semua interaksi di Azure Active Directory B2C (Azure AD B2C) di mana pengguna diharapkan untuk memberikan input adalah profil teknis yang ditegaskan sendiri. Misalnya, halaman pendaftaran, halaman masuk, atau halaman reset kata sandi.
Protokol
Atribut Nama dari elemen Protokol perlu diatur ke Proprietary
. Atribut handler harus berisi nama yang sepenuhnya memenuhi syarat dari perakitan handler protokol yang digunakan oleh Azure AD B2C untuk menegaskan sendiri: Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Contoh berikut menunjukkan profil teknis yang ditegaskan sendiri untuk pendaftaran email:
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
<DisplayName>Email signup</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
Klaim input
Dalam profil teknis yang ditegaskan sendiri, Anda dapat menggunakan elemen InputClaims dan InputClaimsTransformations untuk melakukan pra-populasi nilai klaim yang muncul di halaman yang ditegaskan sendiri (klaim tampilan). Misalnya, dalam kebijakan edit profil, perjalanan pengguna pertama kali membaca profil pengguna dari layanan direktori Azure AD B2C, lalu profil teknis yang ditegaskan sendiri menetapkan klaim input dengan data pengguna yang disimpan di profil pengguna. Klaim ini dikumpulkan dari profil pengguna lalu disajikan kepada pengguna yang kemudian dapat mengedit data yang ada.
<TechnicalProfile Id="SelfAsserted-ProfileUpdate">
...
<InputClaims>
<InputClaim ClaimTypeReferenceId="alternativeSecurityId" />
<InputClaim ClaimTypeReferenceId="userPrincipalName" />
<InputClaim ClaimTypeReferenceId="givenName" />
<InputClaim ClaimTypeReferenceId="surname" />
</InputClaims>
Klaim tampilan
Elemen DisplayClaims berisi daftar klaim yang akan disajikan di layar untuk mengumpulkan data dari pengguna. Untuk melakukan pra-populasi nilai klaim tampilan, gunakan klaim input yang dijelaskan sebelumnya. Elemen tersebut mungkin juga berisi nilai default.
Urutan klaim dalam DisplayClaims menentukan urutan di mana Azure AD B2C merender klaim di layar. Guna mewajibkan pengguna memberikan nilai untuk klaim tertentu, atur atribut Required dari elemen DisplayClaim ke true
.
Elemen ClaimType dalam kumpulan DisplayClaims perlu mengatur elemen UserInputType ke jenis input pengguna yang didukung oleh Azure AD B2C. Misalnya, TextBox
atau DropdownSingleSelect
.
Menambahkan referensi ke DisplayControl
Dalam pengumpulan klaim tampilan, Anda dapat menyertakan referensi ke DisplayControl yang telah Anda buat. Kontrol tampilan adalah elemen antarmuka pengguna yang memiliki fungsionalitas khusus dan berinteraksi dengan layanan backend Azure AD B2C. Ini memungkinkan pengguna untuk melakukan tindakan di halaman yang memanggil profil teknis validasi di backend. Misalnya, memverifikasi alamat email, nomor telepon, atau nomor loyalitas pelanggan.
Contoh berikut TechnicalProfile
mengilustrasikan penggunaan klaim tampilan dengan kontrol tampilan.
- Klaim tampilan pertama membuat referensi ke kontrol tampilan
emailVerificationControl
, yang mengumpulkan dan memverifikasi alamat email. - Klaim tampilan kedua membuat referensi ke
captchaChallengeControl
kontrol tampilan, yang menghasilkan dan memverifikasi kode CAPTCHA. - Klaim tampilan keenam membuat referensi ke
phoneVerificationControl
kontrol tampilan, yang mengumpulkan dan memverifikasi nomor telepon. - Klaim tampilan lainnya adalah ClaimType yang akan dikumpulkan dari pengguna.
<TechnicalProfile Id="Id">
<DisplayClaims>
<DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
<DisplayClaim DisplayControlReferenceId="captchaChallengeControl" />
<DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
<DisplayClaim DisplayControlReferenceId="phoneVerificationControl" />
<DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
<DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
</DisplayClaims>
</TechnicalProfile>
Seperti yang disebutkan, klaim tampilan dengan referensi ke kontrol tampilan dapat menjalankan validasinya sendiri, misalnya memverifikasi alamat email. Selain itu, halaman yang ditegaskan sendiri mendukung penggunaan profil teknis validasi untuk memvalidasi seluruh halaman, termasuk input pengguna (jenis klaim atau kontrol tampilan), sebelum melanjutkan ke langkah orkestrasi berikutnya.
Menggabungkan penggunaan klaim tampilan dan klaim output dengan hati-hati
Jika Anda menentukan satu atau beberapa elemen DisplayClaim dalam profil teknis yang ditegaskan sendiri, Anda harus menggunakan DisplayClaim untuk setiap klaim yang ingin Anda tampilkan di layar dan dikumpulkan dari pengguna. Tidak ada klaim output yang ditampilkan oleh profil teknis yang ditegaskan sendiri yang berisi setidaknya satu klaim tampilan.
Pertimbangkan contoh berikut di mana klaim age
didefinisikan sebagai klaim output dalam kebijakan dasar. Sebelum menambahkan klaim tampilan apa pun ke profil teknis yang ditegaskan sendiri, klaim age
ditampilkan di layar untuk pengumpulan data dari pengguna:
<TechnicalProfile Id="id">
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="age" />
</OutputClaims>
</TechnicalProfile>
Jika kebijakan node leaf yang mewarisi dasar tersebut kemudian menetapkan officeNumber
sebagai klaim tampilan:
<TechnicalProfile Id="id">
<DisplayClaims>
<DisplayClaim ClaimTypeReferenceId="officeNumber" />
</DisplayClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="officeNumber" />
</OutputClaims>
</TechnicalProfile>
Klaim age
dalam kebijakan dasar tidak lagi disajikan di layar kepada pengguna - secara efektif "tersembunyi." Untuk menampilkan age
klaim dan mengumpulkan nilai usia dari pengguna, Anda harus menambahkan age
DisplayClaim.
Klaim output
Elemen OutputClaims berisi daftar klaim yang akan dikembalikan ke langkah orkestrasi berikutnya. Atribut DefaultValue hanya berlaku jika klaim belum pernah ditetapkan. Jika sudah ditetapkan dalam langkah orkestrasi sebelumnya, nilai default tidak berlaku meskipun pengguna membiarkan nilai kosong. Untuk memaksa penggunaan nilai default, atur atribut AlwaysUseDefaultValue ke true
.
Untuk alasan keamanan, nilai klaim kata sandi (UserInputType
diatur ke Password
) hanya tersedia untuk profil teknis validasi profil teknis yang ditegaskan sendiri. Anda tidak dapat menggunakan klaim kata sandi dalam langkah orkestrasi berikutnya.
Catatan
Dalam versi Identity Experience Framework (IEF) sebelumnya, klaim output digunakan untuk mengumpulkan data dari pengguna. Untuk mengumpulkan data dari pengguna, gunakan kumpulan DisplayClaims sebagai gantinya.
Elemen OutputClaimsTransformations mungkin berisi kumpulan elemen OutputClaimsTransformation yang digunakan untuk memodifikasi klaim output atau menghasilkan yang baru.
Kapan Anda harus menggunakan klaim output
Dalam profil teknis yang ditegaskan sendiri, pengumpulan klaim output mengembalikan klaim ke langkah orkestrasi berikutnya.
Gunakan klaim output ketika:
- Klaim dihasilkan melalui transformasi klaim output.
- Menetapkan nilai default dalam klaim output tanpa mengumpulkan data dari pengguna atau mengembalikan data dari profil teknis validasi. Profil teknis yang ditegaskan sendiri
LocalAccountSignUpWithLogonEmail
menetapkan klaim executed-SelfAsserted-Input ketrue
. - Profil teknis validasi mengembalikan klaim output - Profil teknis Anda dapat memanggil profil teknis validasi yang mengembalikan beberapa klaim. Anda mungkin ingin meningkatkan klaim dan mengembalikannya ke langkah orkestrasi berikutnya dalam perjalanan pengguna. Misalnya, saat masuk dengan akun lokal, profil teknis yang ditegaskan sendiri bernama
SelfAsserted-LocalAccountSignin-Email
memanggil profil teknis validasi bernamalogin-NonInteractive
. Profil teknis ini memvalidasi informasi masuk pengguna dan juga mengembalikan profil pengguna. Seperti 'userPrincipalName', 'displayName', 'givenName' dan 'surName'. - Kontrol tampilan mengembalikan klaim output - Profil teknis Anda mungkin memiliki referensi ke kontrol tampilan. Kontrol tampilan mengembalikan beberapa klaim, seperti alamat email terverifikasi. Anda mungkin ingin meningkatkan klaim dan mengembalikannya ke langkah orkestrasi berikutnya dalam perjalanan pengguna.
Contoh berikut menunjukkan penggunaan profil teknis yang ditegaskan sendiri yang menggunakan klaim tampilan dan klaim output.
<TechnicalProfile Id="LocalAccountSignUpWithLogonEmail">
<DisplayName>Email signup</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="IpAddressClaimReferenceId">IpAddress</Item>
<Item Key="ContentDefinitionReferenceId">api.localaccountsignup</Item>
<Item Key="language.button_continue">Create</Item>
</Metadata>
<InputClaims>
<InputClaim ClaimTypeReferenceId="email" />
</InputClaims>
<DisplayClaims>
<DisplayClaim DisplayControlReferenceId="emailVerificationControl" />
<DisplayClaim DisplayControlReferenceId="SecondaryEmailVerificationControl" />
<DisplayClaim ClaimTypeReferenceId="displayName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="givenName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="surName" Required="true" />
<DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" />
<DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
</DisplayClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="email" Required="true" />
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" />
<OutputClaim ClaimTypeReferenceId="newUser" />
</OutputClaims>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="AAD-UserWriteUsingLogonEmail" />
</ValidationTechnicalProfiles>
<UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>
Catatan
Saat Anda mengumpulkan nilai klaim kata sandi di profil teknis yang dinyatakan sendiri, nilai tersebut hanya tersedia dalam profil teknis yang sama atau dalam profil teknis validasi yang dirujuk oleh profil teknis yang dinyatakan sendiri yang sama. Ketika eksekusi profil teknis yang ditegaskan sendiri selesai, dan pindah ke profil teknis lain, nilai kata sandi hilang. Akibatnya, klaim kata sandi hanya dapat disimpan dalam langkah orkestrasi tempat klaim dikumpulkan.
Halaman pendaftaran atau masuk klaim output
Di halaman pendaftaran dan masuk gabungan, perhatikan hal berikut saat menggunakan definisi konten elemen DataUri yang menentukan jenis halaman unifiedssp
atau unifiedssd
:
- Hanya klaim nama pengguna dan kata sandi yang dirender.
- Dua klaim output pertama haruslah nama pengguna dan kata sandi (dalam urutan ini).
- Klaim lain tidak dirender; untuk klaim ini, Anda harus mengatur
defaultValue
atau memanggil profil teknis validasi formulir klaim.
Klaim bertahan
Elemen PersistedClaims tidak digunakan. Profil teknis yang ditegaskan sendiri tidak melanjutkan data ke Azure AD B2C. Sebagai gantinya, panggilan dilakukan ke profil teknis validasi yang bertanggung jawab untuk menjaga data. Misalnya, kebijakan pendaftaran menggunakan profil teknis yang ditegaskan sendiri LocalAccountSignUpWithLogonEmail
untuk mengumpulkan profil pengguna baru. Profil teknis LocalAccountSignUpWithLogonEmail
memanggil profil teknis validasi untuk membuat akun di Azure AD B2C.
Profil teknis validasi
Profil teknis validasi digunakan untuk memvalidasi beberapa atau semua klaim output dari profil teknis referensi. Klaim input dari profil teknis validasi harus muncul di klaim output dari profil teknis yang ditegaskan sendiri. Profil teknis validasi memvalidasi input pengguna dan dapat mengembalikan kesalahan kepada pengguna.
Profil teknis validasi dapat menjadi profil teknis apa pun dalam kebijakan, seperti ID Microsoft Entra atau profil teknis REST API . Dalam contoh sebelumnya, profil teknis LocalAccountSignUpWithLogonEmail
memvalidasi bahwa signinName tidak ada di direktori. Jika tidak, profil teknis validasi membuat akun lokal dan mengembalikan objectId, authenticationSource, newUser. Profil teknis SelfAsserted-LocalAccountSignin-Email
memanggil profil teknis validasi login-NonInteractive
untuk memvalidasi informasi masuk pengguna.
Anda juga dapat memanggil profil teknis REST API dengan logika bisnis Anda, menimpa klaim input, atau memperkaya data pengguna dengan mengintegrasikan lebih lanjut dengan aplikasi lini bisnis perusahaan. Untuk informasi selengkapnya, lihat Profil teknis validasi
Catatan
Profil teknis validasi hanya dipicu ketika ada input dari pengguna. Anda tidak dapat membuat profil teknis penegasan diri kosong untuk memanggil profil teknis validasi hanya untuk memanfaatkan atribut ContinueOnError dari elemen ValidationTechnicalProfile. Anda hanya dapat memanggil profil teknis validasi dari profil teknis yang ditegaskan sendiri yang meminta input dari pengguna, atau dari langkah orkestrasi dalam perjalanan pengguna.
Metadata
Atribut | Wajib | Deskripsi |
---|---|---|
setting.operatingMode 1 | No | Untuk halaman masuk, properti ini mengontrol perilaku bidang nama pengguna, seperti validasi input dan pesan kesalahan. Nilai yang diharapkan: Username atau Email . Lihat demo langsung metadata ini. |
AllowGenerationOfClaimsWithNullValues | No | Izinkan untuk menghasilkan klaim dengan nilai null. Misalnya, dalam kasus pengguna tidak memilih kotak centang. |
ContentDefinitionReferenceId | Ya | Pengidentifikasi definisi konten yang terkait dengan profil teknis ini. |
EnforceEmailVerification | No | Untuk pendaftaran atau pengeditan profil, terapkan verifikasi email. Nilai yang mungkin: true (default), atau false . |
setting.retryLimit | No | Mengontrol berapa kali pengguna dapat mencoba memberikan data yang diperiksa terhadap profil teknis validasi. Misalnya, pengguna mencoba mendaftar dengan akun yang sudah ada dan terus mencoba hingga batas tercapai. Lihat demo langsung metadata ini. |
SignUpTarget 1 | No | Pengidentifikasi pertukaran target pendaftaran. Saat pengguna mengklik tombol pendaftaran, Azure AD B2C menjalankan pengidentifikasi pertukaran yang ditentukan. |
setting.showCancelButton | No | Menampilkan tombol batalkan. Nilai yang mungkin: true (default), atau false . Lihat demo langsung metadata ini. |
setting.showContinueButton | No | Menampilkan tombol lanjutkan. Nilai yang mungkin: true (default), atau false . Lihat demo langsung metadata ini. |
setting.showSignupLink 2 | No | Menampilkan tombol daftar. Nilai yang mungkin: true (default), atau false . Lihat demo langsung metadata ini. |
setting.forgotPasswordLinkLocation 2 | No | Menampilkan tautan lupa kata sandi. Nilai yang mungkin: AfterLabel (default) menampilkan tautan langsung setelah label atau setelah bidang input kata sandi saat tidak ada label, AfterInput menampilkan tautan setelah bidang input kata sandi, AfterButtons menampilkan tautan di bagian bawah formulir setelah tombol, atau None menghapus tautan lupa kata sandi. Lihat demo langsung metadata ini. |
setting.enableRememberMe 2 | No | Menampilkan kotak centang Tetap masuk. Nilai yang mungkin: true , atau false (default). Demo langsung metadata ini. |
setting.inputVerificationDelayTimeInMilliseconds 3 | No | Meningkatkan pengalaman pengguna, dengan menunggu pengguna berhenti mengetik, lalu memvalidasi nilai. Nilai default 2000 milidetik. Lihat demo langsung metadata ini. |
IncludeClaimResolvingInClaimsHandling | No | Untuk klaim input dan output, menentukan apakah resolusi klaim disertakan dalam profil teknis atau tidak. Nilai yang mungkin: true , atau false (default). Jika Anda ingin menggunakan penyelesai klaim di profil teknis, atur ini ke true . |
setting.forgotPasswordLinkOverride 4 | No | Reset kata sandi mengklaim pertukaran yang akan dieksekusi. Untuk informasi selengkapnya, lihat Pengaturan ulang kata sandi mandiri. |
setting.enableCaptchaChallenge | No | Menentukan apakah kode tantangan CAPTCHA harus ditampilkan. Nilai yang mungkin: true , atau false (default). Agar pengaturan ini berfungsi, kontrol tampilan CAPTCHA harus direferensikan dalam klaim tampilan profil teknis yang ditegaskan sendiri. Fitur CAPTCHA ada di pratinjau publik. |
setting.showHeading | No | Menentukan apakah elemen judul Detail Pengguna harus terlihat. Nilai yang mungkin: true (default), atau false . |
Catatan:
- Tersedia untuk definisi konten jenis DataUri dari
unifiedssp
atauunifiedssd
. - Tersedia untuk definisi konten jenis DataUri dari
unifiedssp
atauunifiedssd
. Versi tata letak halaman 1.1.0 dan yang lebih baru. - Tersedia untuk tata letak halaman versi 1.2.0 dan yang lebih baru.
- Tersedia untuk definisi konten jenis DataUri dari
unifiedssp
. Versi tata letak halaman 2.1.2 dan yang lebih baru.
Kunci kriptografi
Elemen CryptographicKeys tidak digunakan.