Predicates وPredicateValidations
إشعار
في Azure Active Directory B2C، تم تصميم النُهج المخصصة بشكل أساسي لمعالجة السيناريوهات المعقدة. بالنسبة إلى معظم السيناريوهات، نوصي باستخدام تدفقات المستخدم المضمنة. إذا لم تقم بذلك، تعرف على حزمة بادئ النهج المخصصة في البدء باستخدام النهج المخصصة في Active Directory B2C.
يُمكّنك العنصران Predicates وPredicateValidations من تنفيذ عملية تحقق من الصحة للتأكد من أن البيانات المكوَّنة بشكل صحيح فقط يتم إدخالها في مستأجر Azure Active Directory B2C (Azure AD B2C) لديك.
يعرض الرسم التخطيطي التالي العلاقة بين العنصرين:
تكملات
يعمل العنصر Predicate على تحديد عملية تحقق أساسية من الصحة بهدف فحص قيمة نوع المطالبة ويقدم النتيجة على هيئة true
أو false
. يتم إجراء عملية التحقق من الصحة باستخدام عنصر محدد للأسلوب ومجموعة عناصر للمعلمات ذات صلة بالأسلوب. على سبيل المثال، يمكن للتقييم فحص ما إذا كان طول قيمة سلسلة المطالبة يقع ضمن نطاق الحد الأدنى والأقصى لعدد المعلمات المحددة، أو ما إذا كانت قيمة سلسلة المطالبة تحتوي على مجموعة أحرف. يوفر العنصر UserHelpText رسالة خطأ للمستخدمين إذا فشل الفحص. يمكن ترجمة قيمة العنصر UserHelpText باستخدام تخصيص اللغة.
يجب أن يظهر العنصر Predicates مباشرة بعد العنصر ClaimsSchema ضمن العنصر BuildingBlocks.
يحتوي العنصر Predicates على العنصر التالي:
العنصر | الأحداث | الوصف |
---|---|---|
المسند | 1:n | قائمة بالتقييمات. |
يحتوي العنصر Predicate على السمات التالية:
السمة | المطلوب | الوصف |
---|---|---|
المعرّف | نعم | معرف يُستخدم للتقييم. يمكن للعناصر الأخرى استخدام هذا المعرف في السياسة. |
الأسلوب | نعم | نوع الأسلوب المراد استخدامه للتحقق من الصحة. القيم المحتملة: IsLengthRange أو MatchesRegex أو IncludesCharacters أو IsDateRange. |
HelpText | لا | رسالة خطأ تظهر للمستخدمين إذا فشل الفحص. يمكن ترجمة هذه السلسلة باستخدام تخصيص اللغة |
يحتوي العنصر Predicate على العناصر التالية:
العنصر | الأحداث | الوصف |
---|---|---|
UserHelpText | 0:1 | (مهمَل) رسالة خطأ تظهر للمستخدمين إذا فشل الفحص. |
المعلمات | 1:1 | معلمات نوع الأسلوب المستخدم في التحقق من صحة السلسلة. |
يحتوي العنصر Parameters على العناصر التالية:
العنصر | الأحداث | الوصف |
---|---|---|
المعلمة | 1:n | معلمات نوع الأسلوب المستخدم في التحقق من صحة السلسلة. |
يحتوي العنصر Parameter على السمات التالية:
العنصر | الأحداث | الوصف |
---|---|---|
المعرّف | 1:1 | معرف المعلمة. |
أساليب التقييم
IsLengthRange
يفحص الأسلوب IsLengthRange ما إذا كان طول قيمة سلسلة المطالبة يقع ضمن نطاق الحد الأدنى والأقصى لعدد المعلمات المحددة. تحقق من العرض التوضيحي المباشر للأسلوب الأصلي هذا. يدعم عنصر التقييم المعلمات التالية:
المعلمة | المطلوب | الوصف |
---|---|---|
الحد الأقصى | نعم | الحد الأقصى لعدد الأحرف التي يمكن إدخالها. |
الحد الأدنى | نعم | الحد الأدنى لعدد الأحرف التي يجب إدخالها. |
يوضح المثال التالي أسلوب IsLengthRange مع المعلمات Minimum
والتي Maximum
تحدد نطاق طول السلسلة:
<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
يفحص الأسلوب MatchsRegex ما إذا كانت قيمة سلسلة المطالبة تتطابق مع أي تعبير عادي. تحقق من العرض التوضيحي المباشر للأسلوب الأصلي هذا. يدعم عنصر التقييم المعلمات التالية:
المعلمة | المطلوب | الوصف |
---|---|---|
RegularExpression | نعم | نمط التعبير العادي المطلوب مطابقته. |
يعرض المثال التالي MatchesRegex
أسلوباً مزوداً بالمعلمة RegularExpression
التي تحدد تعبيراً عادياً:
<Predicate Id="PIN" Method="MatchesRegex" HelpText="The password must be numbers only.">
<Parameters>
<Parameter Id="RegularExpression">^[0-9]+$</Parameter>
</Parameters>
</Predicate>
IncludesCharacters
يفحص الأسلوب IncludesCharacters ما إذا كانت قيمة سلسلة المطالبة تحتوي على مجموعة أحرف. تحقق من العرض التوضيحي المباشر للأسلوب الأصلي هذا. يدعم عنصر التقييم المعلمات التالية:
المعلمة | المطلوب | الوصف |
---|---|---|
مجموعة الأحرف | نعم | مجموعة الأحرف التي يمكن إدخالها. على سبيل المثال، الأحرف الصغيرة a-z ، أو الأحرف الكبيرة A-Z ، أو الأرقام 0-9 ، أو قائمة الرموز، مثل @#$%^&*\-_+=[]{}|\\:',?/~"();! . |
يعرض المثال التالي IncludesCharacters
أسلوباً مزوداً بالمعلمة CharacterSet
التي تحدد مجموعة الأحرف:
<Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
<Parameters>
<Parameter Id="CharacterSet">a-z</Parameter>
</Parameters>
</Predicate>
IsDateRange
يفحص الأسلوب IsDateRange ما إذا كانت قيمة سلسلة المطالبة التاريخ تقع بين نطاق الحد الأدنى والأقصى لعدد المعلمات المحددة. تحقق من العرض التوضيحي المباشر للأسلوب الأصلي هذا. يدعم عنصر التقييم المعلمات التالية:
المعلمة | المطلوب | الوصف |
---|---|---|
الحد الأقصى | نعم | أبعد تاريخ محتمل يمكن إدخاله. يتبع تنسيق التاريخ الشكل التقليدي yyyy-mm-dd ، أو Today . |
الحد الأدنى | نعم | أقرب تاريخ محتمل يمكن إدخاله. يتبع تنسيق التاريخ الشكل التقليدي yyyy-mm-dd ، أو Today . |
يعرض المثال التالي أسلوب IsDateRange
المزود بالمعلمتين Minimum
وMaximum
اللتين تحددان نطاق التاريخ بتنسيق yyyy-mm-dd
و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>
PredicateValidations
تعمل PredicateValidations على تجميع مجموعة من التقييمات لتشكيل عملية التحقق من صحة إدخال المستخدم التي يمكن تطبيقها على نوع المطالبة، بينما تحدد التقييمات عملية التحقق من الصحة اللازمة لفحص نوع المطالبة. يحتوي كل عنصر من عناصر PredicateValidation على مجموعة من عناصر PredicateGroup التي تحتوي على مجموعة من عناصر PredicateReference التي تشير إلى Predicate. لاجتياز عملية التحقق من الصحة، يجب أن تجتاز قيمة المطالبة جميع الاختبارات التي يجريها أي تقييم موجود ضمن مجموعة PredicateGroup كلها المزودة بمجموعة العناصر PredicateReference التابعة لها.
يجب أن يظهر العنصر PredicateValidations مباشرة بعد العنصر Predicates ضمن العنصر BuildingBlocks.
<PredicateValidations>
<PredicateValidation Id="">
<PredicateGroups>
<PredicateGroup Id="">
<UserHelpText></UserHelpText>
<PredicateReferences MatchAtLeast="">
<PredicateReference Id="" />
...
</PredicateReferences>
</PredicateGroup>
...
</PredicateGroups>
</PredicateValidation>
...
</PredicateValidations>
يحتوي العنصر PredicateValidations على العنصر التالي:
العنصر | الأحداث | الوصف |
---|---|---|
PredicateValidation | 1:n | قائمة بعمليات التحقق من صحة التقييم. |
يحتوي العنصرPredicateValidation على السمة التالية:
السمة | المطلوب | الوصف |
---|---|---|
المعرّف | نعم | معرف يُستخدم لعملية التحقق من صحة التقييم. يمكن للعنصر ClaimType استخدام هذا المعرف في النهج. |
يحتوي العنصر PredicateValidation على العنصر التالي:
العنصر | الأحداث | الوصف |
---|---|---|
PredicateGroups | 1:n | قائمة بمجموعات التقييمات. |
يحتوي العنصر PredicateGroups على العنصر التالي:
العنصر | الأحداث | الوصف |
---|---|---|
PredicateGroup | 1:n | قائمة بالتقييمات. |
يحتوي العنصر PredicateGroup على السمة التالية:
السمة | المطلوب | الوصف |
---|---|---|
المعرّف | نعم | معرف يُستخدم لمجموعة التقييمات. |
يحتوي العنصر PredicateGroup على العناصر التالية:
العنصر | الأحداث | الوصف |
---|---|---|
UserHelpText | 0:1 | وصف للتقييم الذي يمكن أن يكون مفيداً للمستخدمين من أجل معرفة نوع القيمة التي يجب أن يكتبوها. |
PredicateReferences | 1:n | قائمة المراجع الأصلية. |
يحتوي العنصر PredicateReferences على السمات التالية:
السمة | المطلوب | الوصف |
---|---|---|
MatchAtLeast | لا | تحدد ضرورة تطابق القيمة مع تحديدات التقييم العديدة على الأقل للإدخال الذي سيتم قبوله. إذا لم يتم تحديد ذلك، يجب أن تتطابق القيمة مع جميع تحديدات التقييم. |
يحتوي العنصر PredicateReferences على العناصر التالية:
العنصر | الأحداث | الوصف |
---|---|---|
PredicateReference | 1:n | مرجع إلى التقييم. |
يحتوي العنصر PredicateReference على السمات التالية:
السمة | المطلوب | الوصف |
---|---|---|
المعرّف | نعم | معرف يُستخدم لعملية التحقق من صحة التقييم. |
تكوين تعقيد كلمة المرور
يمكنك التحكم في متطلبات تعقيد كلمات المرور التي يوفرها أي مستخدم عند إنشاء حساب باستخدام Predicates وPredicateValidationsInput. وبشكل افتراضي، يستخدم Azure AD B2C كلمات مرور قوية. يدعم Microsoft Azure Active Directory B2C أيضًا خيارات التكوين للتحكم في تعقيد كلمات المرور التي يمكن للعملاء استخدامها. يمكنك تحديد مدى تعقيد كلمة المرور باستخدام عناصر التقييم هذه:
- يعمل IsLengthBetween8And64 باستخدام الأسلوب
IsLengthRange
على التحقق من صحة عدد أحرف كلمة المرور التي يجب أن تتراوح بين 8 و64 حرفاً. - يعمل Lowercase باستخدام الأسلوب
IncludesCharacters
على التحقق من صحة احتواء كلمة المرور على حرف صغير. - يعمل Uppercase باستخدام الأسلوب
IncludesCharacters
على التحقق من صحة احتواء كلمة المرور على حرف كبير. - يعمل Number باستخدام الأسلوب
IncludesCharacters
على التحقق من صحة احتواء كلمة المرور على رقم. - يعمل Symbol باستخدام الأسلوب
IncludesCharacters
على التحقق من صحة احتواء كلمة المرور على حرف واحد من أحرف الرموز المتعددة. - يعمل PIN باستخدام الأسلوب
MatchesRegex
على التحقق من صحة احتواء كلمة المرور على أرقام فقط. - يعمل AllowedAADCharacters باستخدام الأسلوب
MatchesRegex
على التحقق من صحة توفير الحرف الوحيد غير الصالح في كلمة المرور. - يعمل DisallowedWhitespace باستخدام الأسلوب
MatchesRegex
على التحقق من عدم بدء كلمة المرور أو انتهائها بمسافة تحل محل حرف.
<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>
بعد تحديد عمليات التحقق الأساسية من الصحة، يمكنك دمجها معاً وإنشاء مجموعة من نُهج كلمات المرور التي يمكنك استخدامها في النهج الذي تعتمده:
- يعمل SimplePassword على التحقق من صحة DisallowedWhitespace، وAllowedAADCharacters، وIsLengthBetween8And64
- يعمل StrongPassword على التحقق من صحة DisallowedWhitespace، وAllowedAADCharacters، وIsLengthBetween8And64. وتتولى المجموعة الأخيرة
CharacterClasses
تشغيل مجموعة إضافية من التقييمات مع تعيينMatchAtLeast
على 3. يجب أن يتراوح عدد أحرف كلمة مرور المستخدم بين 8 و16 حرفاً، وأن تحتوي الكلمة على ثلاثة أحرف من الأحرف التالية: أحرف صغيرة أو أحرف كبيرة أو رقم أو رمز. - يعمل CustomPassword على التحقق من صحة DisallowedWhitespace وAllowedAADCharacters فقط. لذا، يمكن للمستخدم توفير أي كلمة مرور بأي طول، طالما أن الأحرف صالحة.
<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>
في نوع المطالبة لديك، أضِف العنصر PredicateValidationReference وحدد المعرف على أنه عملية واحدة من عمليات التحقق من صحة التقييم، مثل SimplePassword أو StrongPassword أو 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>
قيما يلي عرض للطريقة التي يتم من خلالها تنظيم العناصر عندما يعرض Azure AD B2C رسالة الخطأ:
تكوين نطاق تاريخ
يمكنك استخدام العنصرين Predicates وPredicateValidations للتحكم في الحد الأدنى والأقصى لقيم التاريخ في UserInputType باستخدام DateTimeDropdown
. للقيام بذلك، عليك إنشاء Predicate باستخدام الأسلوب IsDateRange
وتوفير الحد الأدنى والحد الأقصى لعدد المعلمات.
<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>
أضِف PredicateValidation مع مرجع إلى التقييم DateRange
.
<PredicateValidations>
<PredicateValidation Id="CustomDateRange">
<PredicateGroups>
<PredicateGroup Id="DateRangeGroup">
<PredicateReferences>
<PredicateReference Id="DateRange" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
</PredicateValidations>
في نوع المطالبة لديك، أضِف العنصر PredicateValidationReference وحدد المعرف على أنه 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>
الخطوات التالية
- تعرف على كيفية تكوين تعقيد كلمة المرور باستخدام نُهج مخصصة في Azure Active Directory B2C باستخدام عمليات التحقق من صحة التقييم.