Koşullar ve PredicateValidations
Not
Azure Active Directory B2C'de özel ilkeler öncelikli olarak karmaşık senaryoları ele almak için tasarlanmıştır. Çoğu senaryoda, yerleşik kullanıcı akışlarını kullanmanızı öneririz. Bunu yapmadıysanız, Active Directory B2C'de özel ilkeleri kullanmaya başlama bölümünde özel ilke başlangıç paketi hakkında bilgi edinin.
Predicates ve PredicateValidations öğeleri, Azure Active Directory B2C (Azure AD B2C) kiracınıza yalnızca düzgün biçimlendirilmiş verilerin girildiğinden emin olmak için bir doğrulama işlemi gerçekleştirmenizi sağlar.
Aşağıdaki diyagramda öğeler arasındaki ilişki gösterilmektedir:
Koşullar
Koşul öğesi, bir talep türünün değerini denetlemek için temel bir doğrulama tanımlar ve veya false
döndürürtrue
. Doğrulama, belirtilen bir Method öğesi ve yöntemiyle ilgili parametre öğeleri kümesi kullanılarak yapılır. Örneğin koşul, bir dize talep değerinin uzunluğunun belirtilen en düşük ve en yüksek parametre aralığında olup olmadığını veya dize talep değerinin karakter kümesi içerip içermediğini denetleyebilir. UserHelpText öğesi, denetim başarısız olursa kullanıcılar için bir hata iletisi sağlar. UserHelpText öğesinin değeri dil özelleştirmesi kullanılarak yerelleştirilebilir.
Predicates öğesi, BuildingBlocks öğesi içindeki ClaimsSchema öğesinin hemen ardından görünmelidir.
Predicates öğesi aşağıdaki öğeyi içerir:
Öğe | Oluşum | Açıklama |
---|---|---|
Yüklemi | 1:n | Koşul listesi. |
Koşul öğesi aşağıdaki öznitelikleri içerir:
Öznitelik | Gerekli | Açıklama |
---|---|---|
Id | Yes | Koşul için kullanılan tanımlayıcı. Diğer öğeler ilkede bu tanımlayıcıyı kullanabilir. |
Yöntem | Yes | Doğrulama için kullanılacak yöntem türü. Olası değerler: IsLengthRange, MatchesRegex, IncludesCharacters veya IsDateRange. |
Helptext | No | Denetim başarısız olursa kullanıcılar için bir hata iletisi. Bu dize, dil özelleştirmesi kullanılarak yerelleştirilebilir |
Koşul öğesi aşağıdaki öğeleri içerir:
Öğe | Oluşum | Açıklama |
---|---|---|
UserHelpText | 0:1 | (Kullanım dışı) Denetim başarısız olursa kullanıcılar için bir hata iletisi. |
Parametreler | 1:1 | Dize doğrulamasının yöntem türü için parametreler. |
Parameters öğesi aşağıdaki öğeleri içerir:
Öğe | Oluşum | Açıklama |
---|---|---|
Parametre | 1:n | Dize doğrulamasının yöntem türü için parametreler. |
Parameter öğesi aşağıdaki öznitelikleri içerir:
Öğe | Oluşum | Açıklama |
---|---|---|
Id | 1:1 | parametresinin tanımlayıcısı. |
Koşul yöntemleri
IsLengthRange
IsLengthRange yöntemi, bir dize talep değerinin uzunluğunun belirtilen en düşük ve en yüksek parametre aralığında olup olmadığını denetler. Bu koşul yönteminin Canlı tanıtımını gözden geçirin. koşul öğesi aşağıdaki parametreleri destekler:
Parametre | Gerekli | Açıklama |
---|---|---|
Maksimum | Yes | Girilebilen karakter sayısı üst sınırı. |
Minimum | Yes | Girilmesi gereken en az karakter sayısı. |
Aşağıdaki örnekte, parametreleri Minimum
olan ve Maximum
dizenin uzunluk aralığını belirten bir IsLengthRange yöntemi gösterilmektedir:
<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
MatchesRegex yöntemi, bir dize talep değerinin normal ifadeyle eşleşip eşleşmediğini denetler. Bu koşul yönteminin Canlı tanıtımını gözden geçirin. koşul öğesi aşağıdaki parametreleri destekler:
Parametre | Gerekli | Açıklama |
---|---|---|
RegularExpression | Yes | Eşleştirecek normal ifade deseni. |
Aşağıdaki örnekte, normal ifadeyi MatchesRegex
belirten parametresine RegularExpression
sahip bir yöntem gösterilmektedir:
<Predicate Id="PIN" Method="MatchesRegex" HelpText="The password must be numbers only.">
<Parameters>
<Parameter Id="RegularExpression">^[0-9]+$</Parameter>
</Parameters>
</Predicate>
IncludesCharacters
IncludesCharacters yöntemi, dize talep değerinin karakter kümesi içerip içermediğini denetler. Bu koşul yönteminin Canlı tanıtımını gözden geçirin. koşul öğesi aşağıdaki parametreleri destekler:
Parametre | Gerekli | Açıklama |
---|---|---|
Characterset | Yes | Girilebilen karakter kümesi. Örneğin, küçük harf karakterler a-z , büyük harf karakterler A-Z , rakamlar 0-9 veya gibi @#$%^&*\-_+=[]{}|\\:',?/~"();! bir simge listesi. |
Aşağıdaki örnekte, karakter kümesini belirten parametresine CharacterSet
sahip bir IncludesCharacters
yöntem gösterilmektedir:
<Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
<Parameters>
<Parameter Id="CharacterSet">a-z</Parameter>
</Parameters>
</Predicate>
IsDateRange
IsDateRange yöntemi, tarih talep değerinin belirtilen en düşük ve en yüksek parametre aralığı arasında olup olmadığını denetler. Bu koşul yönteminin Canlı tanıtımını gözden geçirin. koşul öğesi aşağıdaki parametreleri destekler:
Parametre | Gerekli | Açıklama |
---|---|---|
Maksimum | Yes | Girilebilen en büyük olası tarih. Tarihin biçimi kurala veya Today 'a göre belirleniryyyy-mm-dd . |
Minimum | Yes | Girilebilen en küçük olası tarih. Tarihin biçimi kurala veya Today 'a göre belirleniryyyy-mm-dd . |
Aşağıdaki örnekte, ve biçiminde tarih aralığını belirten ve parametrelerine Maximum
Minimum
sahip bir yöntem gösterilmektedir IsDateRange
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
Koşullar bir talep türüne karşı denetlenecek doğrulamayı tanımlarken, PredicateValidations bir talep türüne uygulanabilecek bir kullanıcı girişi doğrulaması oluşturmak için bir dizi koşulu gruplandırır. Her PredicateValidation öğesi, Bir Koşula işaret eden bir Dizi PredicateReference öğesi içeren bir PredicateGroup öğeleri kümesi içerir. Doğrulamayı geçirmek için, talebin değeri predicateReference öğeleri kümesiyle predicateGroup'un tümü altında herhangi bir koşulun tüm testlerini geçirmelidir.
PredicateValidations öğesi, BuildingBlocks öğesi içindeki Predicates öğesinin hemen ardından görünmelidir.
<PredicateValidations>
<PredicateValidation Id="">
<PredicateGroups>
<PredicateGroup Id="">
<UserHelpText></UserHelpText>
<PredicateReferences MatchAtLeast="">
<PredicateReference Id="" />
...
</PredicateReferences>
</PredicateGroup>
...
</PredicateGroups>
</PredicateValidation>
...
</PredicateValidations>
PredicateValidations öğesi aşağıdaki öğeyi içerir:
Öğe | Oluşum | Açıklama |
---|---|---|
PredicateValidation | 1:n | Koşul doğrulama listesi. |
PredicateValidation öğesi aşağıdaki özniteliği içerir:
Öznitelik | Gerekli | Açıklama |
---|---|---|
Id | Yes | Koşul doğrulaması için kullanılan tanımlayıcı. ClaimType öğesi ilkede bu tanımlayıcıyı kullanabilir. |
PredicateValidation öğesi aşağıdaki öğeyi içerir:
Öğe | Oluşum | Açıklama |
---|---|---|
PredicateGroups | 1:n | Koşul gruplarının listesi. |
PredicateGroups öğesi aşağıdaki öğeyi içerir:
Öğe | Oluşum | Açıklama |
---|---|---|
PredicateGroup | 1:n | Koşul listesi. |
PredicateGroup öğesi aşağıdaki özniteliği içerir:
Öznitelik | Gerekli | Açıklama |
---|---|---|
Id | Yes | Koşul grubu için kullanılan tanımlayıcı. |
PredicateGroup öğesi aşağıdaki öğeleri içerir:
Öğe | Oluşum | Açıklama |
---|---|---|
UserHelpText | 0:1 | Kullanıcıların yazmaları gereken değeri bilmelerine yardımcı olabilecek koşulun açıklaması. |
PredicateReferences | 1:n | Koşul başvurularının listesi. |
PredicateReferences öğesi aşağıdaki öznitelikleri içerir:
Öznitelik | Gerekli | Açıklama |
---|---|---|
MatchAtLeast | No | Girişin kabul edilmesi için değerin en az bu kadar koşul tanımıyla eşleşmesi gerektiğini belirtir. Belirtilmezse, değerin tüm koşul tanımlarıyla eşleşmesi gerekir. |
PredicateReferences öğesi aşağıdaki öğeleri içerir:
Öğe | Oluşum | Açıklama |
---|---|---|
PredicateReference | 1:n | Koşul başvurusu. |
PredicateReference öğesi aşağıdaki öznitelikleri içerir:
Öznitelik | Gerekli | Açıklama |
---|---|---|
Id | Yes | Koşul doğrulaması için kullanılan tanımlayıcı. |
Parola karmaşıklığını yapılandırma
Predicates ve PredicateValidationsInput ile hesap oluştururken kullanıcı tarafından sağlanan parolaların karmaşıklık gereksinimlerini denetleyebilirsiniz. Varsayılan olarak, Azure AD B2C güçlü parolalar kullanır. Azure AD B2C, müşterilerin kullanabileceği parolaların karmaşıklığını denetlemek için yapılandırma seçeneklerini de destekler. Şu koşul öğelerini kullanarak parola karmaşıklığını tanımlayabilirsiniz:
- Yöntemini kullanarak
IsLengthRange
IsLengthBetween8And64, parolanın 8 ile 64 karakter arasında olması gerektiğini doğrular. - yöntemini kullanarak küçük harf kullanın
IncludesCharacters
, parolanın küçük harf içerdiğini doğrular. - yöntemini kullanarak
IncludesCharacters
büyük harf kullanmak, parolanın büyük harf içerdiğini doğrular. - yöntemini kullanan
IncludesCharacters
sayı, parolanın bir basamak içerdiğini doğrular. - yöntemini kullanan
IncludesCharacters
sembol, parolanın çeşitli sembol karakterlerinden birini içerdiğini doğrular. - yöntemini kullanarak
MatchesRegex
PIN kodu, parolanın yalnızca sayı içerdiğini doğrular. - yöntemini kullanan
MatchesRegex
AllowedAADCharacters, parolanın yalnızca geçersiz karakter sağlandığını doğrular. - yöntemini kullanan
MatchesRegex
DisallowedWhitespace, parolanın boşluk karakteriyle başlamadığını veya bitmediğini doğrular.
<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>
Temel doğrulamaları tanımladıktan sonra bunları birleştirebilir ve ilkenizde kullanabileceğiniz bir dizi parola ilkesi oluşturabilirsiniz:
- SimplePassword , DisallowedWhitespace, AllowedAADCharacters ve IsLengthBetween8And64 değerlerini doğrular
- StrongPassword , DisallowedWhitespace, AllowedAADCharacters, IsLengthBetween8And64'u doğrular. Son grup
CharacterClasses
, 3 olarak ayarlanmış ek bir koşulMatchAtLeast
kümesi çalıştırır. Kullanıcı parolası 8 ile 16 karakter arasında olmalı ve şu karakterlerden üçünü içermelidir: Küçük Harf, Büyük Harf, Sayı veya Simge. - CustomPassword yalnızca DisallowedWhitespace, AllowedAADCharacters'ı doğrular. Bu nedenle, karakterler geçerli olduğu sürece kullanıcı herhangi bir uzunlukta herhangi bir parola sağlayabilir.
<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>
Talep türünüze PredicateValidationReference öğesini ekleyin ve tanımlayıcıyı SimplePassword, StrongPassword veya CustomPassword gibi koşul doğrulamalarından biri olarak belirtin.
<ClaimType Id="password">
<DisplayName>Password</DisplayName>
<DataType>string</DataType>
<AdminHelpText>Enter password</AdminHelpText>
<UserHelpText>Enter password</UserHelpText>
<UserInputType>Password</UserInputType>
<PredicateValidationReference Id="StrongPassword" />
</ClaimType>
Aşağıda, Azure AD B2C hata iletisini görüntülediğinde öğelerin nasıl düzenleniyor olduğu gösterilmektedir:
Tarih aralığını yapılandırma
Predicates ve PredicateValidations öğeleriyle, kullanarak DateTimeDropdown
UserInputType'ın en düşük ve en yüksek tarih değerlerini denetleyebilirsiniz. Bunu yapmak için yöntemiyle IsDateRange
bir Koşul oluşturun ve en düşük ve en yüksek parametreleri sağlayın.
<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>
Koşula başvuru DateRange
içeren bir PredicateValidation ekleyin.
<PredicateValidations>
<PredicateValidation Id="CustomDateRange">
<PredicateGroups>
<PredicateGroup Id="DateRangeGroup">
<PredicateReferences>
<PredicateReference Id="DateRange" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
</PredicateValidations>
Talep türünüze PredicateValidationReference öğesini ekleyin ve tanımlayıcıyı olarak CustomDateRange
belirtin.
<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>
Sonraki adımlar
- Koşul doğrulamalarını kullanarak Azure Active Directory B2C'de özel ilkeler kullanarak parola karmaşıklığını yapılandırmayı öğrenin.