Predikat dan PredikatValidasi
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.
Elemen Predikat dan PredikatValidasi memungkinkan Anda melakukan proses validasi untuk memastikan bahwa hanya data yang dibentuk dengan benar yang dimasukkan ke penyewa Azure Active Directory B2C (Azure AD B2C).
Diagram berikut menunjukkan hubungan antara elemen:
Predikat
Elemen Predikat mendefinisikan validasi dasar untuk memeriksa nilai jenis klaim dan pengembalian true
atau false
. Validasi dilakukan dengan menggunakan elemen Metode tertentu dan sekumpulan elemen Parameter yang relevan dengan metode. Misalnya, predikat dapat memeriksa apakah panjang nilai klaim untai berada dalam rentang parameter minimum dan maksimum yang ditentukan, atau apakah nilai klaim string berisi tataan karakter. Elemen UserHelpText memberikan pesan kesalahan untuk pengguna jika pemeriksaan gagal. Nilai elemen UserHelpText dapat dilokalkan menggunakan kustomisasi bahasa.
Elemen Predikat harus muncul langsung mengikuti elemen ClaimsSchema dalam elemen BuildingBlocks.
Elemen Predikat berisi elemen berikut ini:
Elemen | Kemunculan | Deskripsi |
---|---|---|
Predicate | 1:n | Daftar predikat. |
Elemen Predikat berisi atribut berikut ini:
Atribut | Wajib | Deskripsi |
---|---|---|
Id | Ya | Pengidentifikasi yang digunakan untuk predikat. Elemen lain dapat menggunakan pengidentifikasi ini dalam kebijakan. |
Metode | Ya | Jenis metode yang digunakan untuk validasi. Nilai yang mungkin: IsLengthRange, MatchesRegex, IncludesCharacters, atau IsDateRange. |
HelpText | No | Pesan kesalahan untuk pengguna jika pemeriksaan gagal. Untai ini dapat dilokalkan menggunakan kustomisasi bahasa |
Elemen Predikat berisi elemen-elemen berikut ini:
Elemen | Kemunculan | Deskripsi |
---|---|---|
UserHelpText | 0:1 | (Tidak digunakan lagi) Pesan kesalahan untuk pengguna jika pemeriksaan gagal. |
Parameter | 1:1 | Parameter untuk jenis metode validasi untai. |
Elemen Parameter berisi elemen-elemen berikut ini:
Elemen | Kemunculan | Deskripsi |
---|---|---|
Parameter | 1:n | Parameter untuk jenis metode validasi untai. |
Elemen Parameter berisi atribut-atribut berikut ini:
Elemen | Kemunculan | Deskripsi |
---|---|---|
Id | 1:1 | Pengidentifikasi parameter. |
Metode predikat
IsLengthRange
Metode IsLengthRange memeriksa apakah panjang nilai klaim untai berada dalam kisaran parameter minimum dan maksimum yang ditentukan. Periksa Demo langsung metode predikat ini. Elemen predikat mendukung parameter berikut ini:
Parameter | Wajib | Deskripsi |
---|---|---|
Maksimum | Ya | Jumlah maksimal karakter yang bisa dimasukkan. |
Minimum | Ya | Jumlah minimum karakter yang harus dimasukkan. |
Contoh berikut menunjukkan metode IsLengthRange dengan parameter Minimum
dan Maximum
yang menentukan rentang panjang string:
<Predicate Id="IsLengthBetween8And64" Method="IsLengthRange" HelpText="The password must be between 8 and 64 characters.">
<Parameters>
<Parameter Id="Minimum">8</Parameter>
<Parameter Id="Maximum">64</Parameter>
</Parameters>
</Predicate>
MatchesRegex
Metode MatchesRegex memeriksa apakah nilai klaim untai cocok dengan regex. Periksa Demo langsung metode predikat ini. Elemen predikat mendukung parameter berikut ini:
Parameter | Wajib | Deskripsi |
---|---|---|
RegularExpression | Ya | Pola regex yang cocok. |
Contoh berikut menunjukkan MatchesRegex
metode dengan parameter RegularExpression
yang menentukan regex:
<Predicate Id="PIN" Method="MatchesRegex" HelpText="The password must be numbers only.">
<Parameters>
<Parameter Id="RegularExpression">^[0-9]+$</Parameter>
</Parameters>
</Predicate>
IncludesCharacters
Metode IncludesCharacters memeriksa apakah nilai klaim untai berisi tataan karakter. Periksa Demo langsung metode predikat ini. Elemen predikat mendukung parameter berikut ini:
Parameter | Wajib | Deskripsi |
---|---|---|
CharacterSet | Ya | Kumpulan karakter yang bisa dimasukkan. Misalnya, karakter huruf kecil a-z , karakter huruf besar A-Z , angka 0-9 , atau daftar simbol, seperti @#$%^&*\-_+=[]{}|\\:',?/~"();! . |
Contoh berikut menunjukkan IncludesCharacters
metode dengan parameter CharacterSet
yang menentukan sekumpulan karakter:
<Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
<Parameters>
<Parameter Id="CharacterSet">a-z</Parameter>
</Parameters>
</Predicate>
IsDateRange
Metode IsDateRange memeriksa apakah nilai klaim tanggal berada di antara rentang parameter minimum dan maksimum yang ditentukan. Periksa Demo langsung metode predikat ini. Elemen predikat mendukung parameter berikut ini:
Parameter | Wajib | Deskripsi |
---|---|---|
Maksimum | Ya | Tanggal terbesar yang mungkin dapat dimasukkan. Format tanggal mengikuti konvensi yyyy-mm-dd , atau Today . |
Minimum | Ya | Tanggal sekecil mungkin yang dapat dimasukkan. Format tanggal mengikuti konvensi yyyy-mm-dd , atau Today . |
Contoh berikut menunjukkan metode IsDateRange
dengan parameter Minimum
dan Maximum
yang menentukan rentang tanggal dengan format yyyy-mm-dd
dan Today
.
<Predicate Id="DateRange" Method="IsDateRange" HelpText="The date must be between 1970-01-01 and today.">
<Parameters>
<Parameter Id="Minimum">1970-01-01</Parameter>
<Parameter Id="Maximum">Today</Parameter>
</Parameters>
</Predicate>
PredikatValidasi
Sementara predikat mendefinisikan validasi untuk memeriksa terhadap jenis klaim, PredikatValidasi mengelompokkan serangkaian predikat untuk membentuk validasi input pengguna yang dapat diterapkan ke jenis klaim. Setiap elemen PredikatValidasi berisi sekumpulan elemen PredicateGroup yang berisi sekumpulan elemen PredicateReference yang menunjuk ke Predikat. Untuk lulus validasi, nilai klaim harus lulus semua tes dari predikat apa pun di bawah semua PredicateGroup dengan serangkaian elemen PredicateReference mereka.
Elemen PredikatValidasi harus muncul secara langsung mengikuti elemen Predikat dalam elemen BuildingBlocks.
<PredicateValidations>
<PredicateValidation Id="">
<PredicateGroups>
<PredicateGroup Id="">
<UserHelpText></UserHelpText>
<PredicateReferences MatchAtLeast="">
<PredicateReference Id="" />
...
</PredicateReferences>
</PredicateGroup>
...
</PredicateGroups>
</PredicateValidation>
...
</PredicateValidations>
Elemen PredikatValidasi berisi elemen berikut ini:
Elemen | Kemunculan | Deskripsi |
---|---|---|
PredikatValidasi | 1:n | Daftar validasi predikat. |
Elemen PredikatValidasi berisi atribut berikut ini:
Atribut | Wajib | Deskripsi |
---|---|---|
Id | Ya | Pengidentifikasi yang digunakan untuk validasi predikat. Elemen ClaimType dapat menggunakan pengidentifikasi ini dalam kebijakan. |
Elemen PredikatValidasi berisi elemen berikut ini:
Elemen | Kemunculan | Deskripsi |
---|---|---|
PredicateGroups | 1:n | Daftar grup predikat. |
Elemen PredicateGroups berisi elemen berikut ini:
Elemen | Kemunculan | Deskripsi |
---|---|---|
PredicateGroup | 1:n | Daftar predikat. |
Elemen PredicateGroup berisi elemen berikut ini:
Atribut | Wajib | Deskripsi |
---|---|---|
Id | Ya | Pengidentifikasi yang digunakan untuk grup predikat. |
Elemen PredicateGroups berisi elemen berikut ini:
Elemen | Kemunculan | Deskripsi |
---|---|---|
UserHelpText | 0:1 | Deskripsi predikat yang dapat membantu pengguna untuk mengetahui nilai apa yang harus mereka ketik. |
PredicateReferences | 1:n | Daftar referensi predikat. |
Elemen PredicateReferences berisi elemen berikut ini:
Atribut | Wajib | Deskripsi |
---|---|---|
MatchAtLeast | No | Menentukan bahwa nilai harus cocok setidaknya bahwa banyak definisi predikat untuk input yang akan diterima. Jika tidak ditentukan, nilai harus cocok dengan semua definisi predikat. |
Elemen PredicateReferences berisi elemen berikut ini:
Elemen | Kemunculan | Deskripsi |
---|---|---|
PredicateReference | 1:n | Referensi ke predikat. |
Elemen PredicateReference berisi elemen berikut ini:
Atribut | Wajib | Deskripsi |
---|---|---|
Id | Ya | Pengidentifikasi yang digunakan untuk validasi predikat. |
Mengonfigurasi kompleksitas kata sandi
Dengan Predikat dan PredicateValidationsInput Anda dapat mengontrol persyaratan kompleksitas untuk kata sandi yang disediakan oleh pengguna saat membuat akun. Secara default, Azure AD B2C menggunakan kata sandi yang kuat. Azure AD B2C juga mendukung opsi konfigurasi untuk mengontrol kompleksitas kata sandi yang dapat digunakan pelanggan. Anda dapat menentukan kompleksitas kata sandi dengan menggunakan elemen predikat ini:
- IsLengthBetween8And64 menggunakan metode
IsLengthRange
, memvalidasi bahwa kata sandi harus terdiri antara 8 dan 64 karakter. - Huruf kecil menggunakan metode
IncludesCharacters
, memvalidasi bahwa sandi berisi huruf kecil. - Huruf besar menggunakan metode
IncludesCharacters
, memvalidasi bahwa sandi berisi huruf besar. - Angka menggunakan metode
IncludesCharacters
, memvalidasi bahwa sandi berisi angka. - Simbol menggunakan metode
IncludesCharacters
, memvalidasi bahwa sandi berisi salah satu dari beberapa karakter simbol. - PIN menggunakan metode
MatchesRegex
, memvalidasi bahwa sandi hanya berisi angka. - AllowedAADCharacters menggunakan metode
MatchesRegex
, memvalidasi bahwa sandi yang diberikan hanya karakter yang tidak valid. - DisallowedWhitespace menggunakan metode
MatchesRegex
, memvalidasi bahwa sandi tidak dimulai atau diakhiri dengan karakter spasi.
<Predicates>
<Predicate Id="IsLengthBetween8And64" Method="IsLengthRange" HelpText="The password must be between 8 and 64 characters.">
<Parameters>
<Parameter Id="Minimum">8</Parameter>
<Parameter Id="Maximum">64</Parameter>
</Parameters>
</Predicate>
<Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
<Parameters>
<Parameter Id="CharacterSet">a-z</Parameter>
</Parameters>
</Predicate>
<Predicate Id="Uppercase" Method="IncludesCharacters" HelpText="an uppercase letter">
<Parameters>
<Parameter Id="CharacterSet">A-Z</Parameter>
</Parameters>
</Predicate>
<Predicate Id="Number" Method="IncludesCharacters" HelpText="a digit">
<Parameters>
<Parameter Id="CharacterSet">0-9</Parameter>
</Parameters>
</Predicate>
<Predicate Id="Symbol" Method="IncludesCharacters" HelpText="a symbol">
<Parameters>
<Parameter Id="CharacterSet">@#$%^&*\-_+=[]{}|\\:',.?/`~"();!</Parameter>
</Parameters>
</Predicate>
<Predicate Id="PIN" Method="MatchesRegex" HelpText="The password must be numbers only.">
<Parameters>
<Parameter Id="RegularExpression">^[0-9]+$</Parameter>
</Parameters>
</Predicate>
<Predicate Id="AllowedAADCharacters" Method="MatchesRegex" HelpText="An invalid character was provided.">
<Parameters>
<Parameter Id="RegularExpression">(^([0-9A-Za-z\d@#$%^&*\-_+=[\]{}|\\:',?/`~"();! ]|(\.(?!@)))+$)|(^$)</Parameter>
</Parameters>
</Predicate>
<Predicate Id="DisallowedWhitespace" Method="MatchesRegex" HelpText="The password must not begin or end with a whitespace character.">
<Parameters>
<Parameter Id="RegularExpression">(^\S.*\S$)|(^\S+$)|(^$)</Parameter>
</Parameters>
</Predicate>
Setelah menentukan validasi dasar, Anda dapat menggabungkannya bersama-sama dan membuat serangkaian kebijakan kata sandi yang dapat digunakan dalam kebijakan Anda:
- SimplePassword memvalidasi DisallowedWhitespace, AllowedAADCharacters, dan IsLengthBetween8And64
- StrongPassword memvalidasi DisallowedWhitespace, AllowedAADCharacters, dan IsLengthBetween8And64. Grup terakhir
CharacterClasses
menjalankan serangkaian predikat tambahan denganMatchAtLeast
set ke 3. Kata sandi pengguna harus antara 8 dan 16 karakter, dan tiga karakter berikut: Huruf kecil, Huruf besar, Angka, atau Simbol. - CustomPassword hanya memvalidasi DisallowedWhitespace, AllowedAADCharacters. Jadi, pengguna dapat memberikan kata sandi apa pun dengan panjang berapa pun, selama karakter valid.
<PredicateValidations>
<PredicateValidation Id="SimplePassword">
<PredicateGroups>
<PredicateGroup Id="DisallowedWhitespaceGroup">
<PredicateReferences>
<PredicateReference Id="DisallowedWhitespace" />
</PredicateReferences>
</PredicateGroup>
<PredicateGroup Id="AllowedAADCharactersGroup">
<PredicateReferences>
<PredicateReference Id="AllowedAADCharacters" />
</PredicateReferences>
</PredicateGroup>
<PredicateGroup Id="LengthGroup">
<PredicateReferences>
<PredicateReference Id="IsLengthBetween8And64" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
<PredicateValidation Id="StrongPassword">
<PredicateGroups>
<PredicateGroup Id="DisallowedWhitespaceGroup">
<PredicateReferences>
<PredicateReference Id="DisallowedWhitespace" />
</PredicateReferences>
</PredicateGroup>
<PredicateGroup Id="AllowedAADCharactersGroup">
<PredicateReferences>
<PredicateReference Id="AllowedAADCharacters" />
</PredicateReferences>
</PredicateGroup>
<PredicateGroup Id="LengthGroup">
<PredicateReferences>
<PredicateReference Id="IsLengthBetween8And64" />
</PredicateReferences>
</PredicateGroup>
<PredicateGroup Id="CharacterClasses">
<UserHelpText>The password must have at least 3 of the following:</UserHelpText>
<PredicateReferences MatchAtLeast="3">
<PredicateReference Id="Lowercase" />
<PredicateReference Id="Uppercase" />
<PredicateReference Id="Number" />
<PredicateReference Id="Symbol" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
<PredicateValidation Id="CustomPassword">
<PredicateGroups>
<PredicateGroup Id="DisallowedWhitespaceGroup">
<PredicateReferences>
<PredicateReference Id="DisallowedWhitespace" />
</PredicateReferences>
</PredicateGroup>
<PredicateGroup Id="AllowedAADCharactersGroup">
<PredicateReferences>
<PredicateReference Id="AllowedAADCharacters" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
</PredicateValidations>
Dalam jenis klaim Anda, tambahkan elemen PredicateValidationReference dan tentukan pengidentifikasi sebagai salah satu validasi predikat, seperti SimplePassword, StrongPassword, atau CustomPassword.
<ClaimType Id="password">
<DisplayName>Password</DisplayName>
<DataType>string</DataType>
<AdminHelpText>Enter password</AdminHelpText>
<UserHelpText>Enter password</UserHelpText>
<UserInputType>Password</UserInputType>
<PredicateValidationReference Id="StrongPassword" />
</ClaimType>
Berikut ini memperlihatkan bagaimana elemen diatur saat Azure AD B2C menampilkan pesan kesalahan:
Mengonfigurasi rentang tanggal
Dengan elemen Predikat dan PredikatValidasi, Anda dapat mengontrol nilai tanggal minimum dan maksimum UserInputType dengan menggunakan DateTimeDropdown
. Untuk melakukan ini, buat Predikat dengan metode IsDateRange
dan berikan parameter minimum dan maksimum.
<Predicates>
<Predicate Id="DateRange" Method="IsDateRange" HelpText="The date must be between 01-01-1980 and today.">
<Parameters>
<Parameter Id="Minimum">1980-01-01</Parameter>
<Parameter Id="Maximum">Today</Parameter>
</Parameters>
</Predicate>
</Predicates>
Tambahkan PredikatValidasi dengan referensi ke predikat DateRange
.
<PredicateValidations>
<PredicateValidation Id="CustomDateRange">
<PredicateGroups>
<PredicateGroup Id="DateRangeGroup">
<PredicateReferences>
<PredicateReference Id="DateRange" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
</PredicateValidations>
Di jenis klaim Anda, tambahkan elemen PredicateValidationReference dan tentukan pengidentifikasi sebagai CustomDateRange
.
<ClaimType Id="dateOfBirth">
<DisplayName>Date of Birth</DisplayName>
<DataType>date</DataType>
<AdminHelpText>The user's date of birth.</AdminHelpText>
<UserHelpText>Your date of birth.</UserHelpText>
<UserInputType>DateTimeDropdown</UserInputType>
<PredicateValidationReference Id="CustomDateRange" />
</ClaimType>
Langkah berikutnya
- Pelajari cara Mengonfigurasi kompleksitas kata sandi menggunakan kebijakan kustom di Azure Active Directory B2C menggunakan validasi predikat.