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 - itu secara efektif "tersembunyi." Untuk menampilkan klaim age dan mengumpulkan nilai usia dari pengguna, Anda harus menambahkan ageDisplayClaim.

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 ke true.
  • 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 bernama login-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.

Catatan:

  1. Tersedia untuk definisi konten jenis DataUri dari unifiedssp atau unifiedssd.
  2. Tersedia untuk definisi konten jenis DataUri dari unifiedssp atau unifiedssd. Versi tata letak halaman 1.1.0 dan yang lebih baru.
  3. Tersedia untuk tata letak halaman versi 1.2.0 dan yang lebih baru.
  4. 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.