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 ve Koşul Doğrulamaları ilişkisini gösteren diyagram

Koşullar

Koşul öğesi, bir talep türünün değerini denetlemek için temel bir doğrulama tanımlar ve veya falsedö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-9veya gibi @#$%^&amp;*\-_+=[]{}|\\:',?/~"();!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 MaximumMinimum sahip bir yöntem gösterilmektedir IsDateRangeyyyy-mm-ddToday.

<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 IsLengthRangeIsLengthBetween8And64, parolanın 8 ile 64 karakter arasında olması gerektiğini doğrular.
  • yöntemini kullanarak küçük harf kullanınIncludesCharacters, parolanın küçük harf içerdiğini doğrular.
  • yöntemini kullanarak IncludesCharactersbüyük harf kullanmak, parolanın büyük harf içerdiğini doğrular.
  • yöntemini kullanan IncludesCharacterssayı, parolanın bir basamak içerdiğini doğrular.
  • yöntemini kullanan IncludesCharacterssembol, parolanın çeşitli sembol karakterlerinden birini içerdiğini doğrular.
  • yöntemini kullanarak MatchesRegexPIN kodu, parolanın yalnızca sayı içerdiğini doğrular.
  • yöntemini kullanan MatchesRegexAllowedAADCharacters, parolanın yalnızca geçersiz karakter sağlandığını doğrular.
  • yöntemini kullanan MatchesRegexDisallowedWhitespace, 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">@#$%^&amp;*\-_+=[]{}|\\:',.?/`~"();!</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@#$%^&amp;*\-_+=[\]{}|\\:',?/`~"();! ]|(\.(?!@)))+$)|(^$)</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şul MatchAtLeast 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:

Koşul ve Koşul Grubu parola karmaşıklığı örneği diyagramı

Tarih aralığını yapılandırma

Predicates ve PredicateValidations öğeleriyle, kullanarak DateTimeDropdownUserInputType'ı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 CustomDateRangebelirtin.

<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