Tentukan validasi profil teknis 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.

Profil teknis validasi adalah profil teknis biasa dari protokol apa pun, seperti ID Microsoft Entra atau REST API. Profil teknis validasi mengembalikan klaim output, atau mengembalikan kode status HTTP 4xx, dengan data berikut. Untuk informasi selengkapnya, lihat membalas pesan kesalahan

{
    "version": "1.0.0",
    "status": 409,
    "userMessage": "Your error message"
}

Ruang lingkup klaim output profil teknis validasi hanya sebatas profil teknis self-asserted yang memanggil profil teknis validasi, dan profil teknis validasinya. Jika Anda ingin menggunakan klaim output di langkah orkestrasi berikutnya, tambahkan klaim output ke profil teknis self-asserted yang memanggil profil teknis validasi.

Profil teknis validasi dijalankan dalam urutan yang muncul di elemen ValidationTechnicalProfiles. Anda dapat mengonfigurasi di profil teknis validasi apakah eksekusi profil teknis validasi berikutnya harus dilanjutkan jika profil teknis validasi menimbulkan kesalahan atau berhasil.

Profil teknis validasi dapat dieksekusi secara kondisional berdasarkan prakondisi yang ditentukan dalam elemen ValidationTechnicalProfile. Misalnya, Anda dapat memeriksa apakah klaim tertentu ada, atau apakah klaim sama atau tidak dengan nilai yang ditentukan.

Profil teknis self-asserted dapat menentukan profil teknis validasi yang akan digunakan untuk memvalidasi beberapa atau semua klaim outputnya. Semua klaim input profil teknis yang direferensikan harus muncul dalam klaim output dari validasi profil teknis yang direferensikan.

Catatan

Hanya profil teknis self-asserted yang dapat menggunakan profil teknis validasi. Jika Anda perlu memvalidasi klaim output dari profil teknis non-self-asserted, pertimbangkan untuk menggunakan langkah orkestrasi tambahan dalam perjalanan pengguna Anda untuk mengakomodasi profil teknis yang bertanggung jawab atas validasi.

ValidationTechnicalProfiles

Elemen ValidationTechnicalProfiles berisi elemen berikut:

Elemen Kemunculan Deskripsi
ValidationTechnicalProfile 1:n Profil teknis yang akan digunakan untuk memvalidasi beberapa atau semua klaim output dari profil teknis referensi.

Elemen ValidasiTechnicalProfile berisi atribut berikut:

Atribut Wajib Deskripsi
ReferenceId Ya Pengidentifikasi profil teknis yang sudah ditentukan dalam kebijakan atau kebijakan induk.
ContinueOnError No Menunjukkan apakah validasi profil teknis validasi berikutnya harus dilanjutkan jika profil teknis validasi ini menimbulkan kesalahan. Nilai yang memungkin: true atau false (default, pemrosesan profil validasi lebih lanjut akan berhenti dan kesalahan akan ditampilkan).
ContinueOnSuccess No Menunjukkan apakah validasi profil validasi berikutnya harus dilanjutkan jika profil teknis validasi ini berhasil. Nilai yang mungkin: true atau false. Defaultnya adalah true, yang berarti bahwa pemrosesan profil validasi lebih lanjut akan terus berlanjut.

Catatan

Saat ini, jika Anda mengatur ContinueOnError ke false untuk profil teknis validasi jenis ClaimsTransformation, profil teknis tidak mematuhi pengaturan. Untuk mengatasi masalah ini, gunakan Prasyarat sebagai gantinya.

Elemen ValidasiTechnicalProfile berisi atribut berikut:

Elemen Kemunculan Deskripsi
Prasyarat 0:1 Daftar prakondisi yang harus dipenuhi agar profil teknis validasi dapat dijalankan.

Elemen Prakondisi berisi atribut berikut:

Atribut Wajib Deskripsi
Type Ya Jenis pemeriksaan atau kueri yang akan dilakukan untuk prakondisi. Antara ClaimsExist ditentukan untuk memastikan bahwa tindakan harus dilakukan jika klaim yang ditentukan ada dalam kumpulan klaim pengguna saat ini, atau ClaimEquals ditentukan bahwa tindakan harus dilakukan jika klaim yang ditentukan ada dan nilainya sama dengan nilai yang ditentukan.
ExecuteActionsIf Ya Menunjukkan apakah tindakan dalam prakondisi harus dilakukan jika pengujian benar atau salah.

Elemen Prakondisi berisi elemen berikut:

Elemen Kemunculan Deskripsi
Value 1:n Data yang digunakan oleh pemeriksaan. Jika jenis pemeriksaan ini adalah ClaimsExist, bidang ini menentukan ClaimTypeReferenceId untuk dikueri. Jika jenis pemeriksaan ini adalah ClaimEquals, bidang ini menentukan ClaimTypeReferenceId untuk dikueri. Sementara elemen nilai lain berisi nilai yang akan diperiksa.
Perbuatan 1:1 Tindakan yang harus diambil jika pemeriksaan prakondisi dalam langkah orkestrasi adalah benar. Nilai Tindakan diatur ke SkipThisValidationTechnicalProfile. Menentukan bahwa profil teknis validasi terkait tidak boleh dijalankan.

Contoh

Contoh berikut menggunakan profil teknis validasi ini:

  1. Profil teknis validasi pertama memeriksa kredensial pengguna dan tidak melanjutkan jika terjadi kesalahan, seperti nama pengguna atau kata sandi yang tidak valid.
  2. Profil teknis validasi berikutnya, tidak dijalankan jika klaim userType tidak ada, atau jika nilai userType adalah Partner. Profil teknis validasi mencoba membaca profil pengguna dari database mitra internal dan berlanjut jika terjadi kesalahan, seperti layanan REST API tidak tersedia, atau kesalahan internal apa pun.
  3. Profil teknis validasi berikutnya, tidak dijalankan jika klaim userType tidak ada, atau jika nilai userType adalah Customer. Profil teknis validasi berusaha membaca profil pengguna dari database mitra internal dan berlanjut jika terjadi kesalahan, seperti layanan REST API tidak tersedia, atau kesalahan internal apa pun.
<ValidationTechnicalProfiles>
  <ValidationTechnicalProfile ReferenceId="login-NonInteractive" ContinueOnError="false" />
  <ValidationTechnicalProfile ReferenceId="REST-ReadProfileFromCustomersDatabase" ContinueOnError="true" >
    <Preconditions>
      <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
        <Value>userType</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
      <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
        <Value>userType</Value>
        <Value>Partner</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
    </Preconditions>
  </ValidationTechnicalProfile>
  <ValidationTechnicalProfile ReferenceId="REST-ReadProfileFromPartnersDatabase" ContinueOnError="true" >
    <Preconditions>
      <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
        <Value>userType</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
      <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
        <Value>userType</Value>
        <Value>Customer</Value>
        <Action>SkipThisValidationTechnicalProfile</Action>
      </Precondition>
    </Preconditions>
  </ValidationTechnicalProfile>
</ValidationTechnicalProfiles>