Aracılığıyla paylaş


Koşul ve KoşulKaridasyonları

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şul 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, bir koşul, dize talep değerinin uzunluğunun belirtilen en düşük ve en fazla 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 öğesindeki 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 Zorunlu Açıklama
Kimlik Yes Koşul için kullanılan bir tanımlayıcı. Diğer öğeler ilkede bu tanımlayıcıyı kullanabilir.
Metot Yes Doğrulama için kullanılacak yöntem türü. Olası değerler: IsLengthRange, MatchesRegex, IncludesCharacters veya IsDateRange.
Helptext Hayır 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
Kimlik 1:1 Parametresinin tanımlayıcısı.

Koşul yöntemleri

IsLengthRange

IsLengthRange yöntemi, 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 Zorunlu Açıklama
En Büyük Yes Girilebilen karakter sayısı üst sınırı.
Minimum Yes Girilmesi gereken en az karakter sayısı.

Aşağıdaki örnekte, parametreleriyle Minimum Maximum ve 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 Zorunlu Açıklama
RegularExpression Yes Eşleşecek 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, bir 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 Zorunlu Açıklama
Characterset Yes Girilebilen karakter kümesi. Örneğin, küçük harf karakterler a-z, büyük harf karakterler A-Z, basamaklar 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 Zorunlu Açıklama
En Büyük Yes Girilebilen en büyük olası tarih. Tarihin biçimi kural veya Todayşeklindediryyyy-mm-dd.
Minimum Yes Girilebilen en küçük olası tarih. Tarihin biçimi kural veya Todayşeklindediryyyy-mm-dd.

Aşağıdaki örnekte, ve biçiminde tarih aralığını belirten ve parametreleriyle Maximum Minimum 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şul, 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ırmaktadı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 tüm PredicateGroup'un altında herhangi bir koşulun tüm testlerini PredicateReference öğeleri kümesiyle geçirmelidir.

PredicateValidations öğesi, BuildingBlocks öğesindeki 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 Zorunlu Açıklama
Kimlik Yes Koşul doğrulaması için kullanılan bir 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 Zorunlu Açıklama
Kimlik 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 Koşul açıklaması, kullanıcıların yazmaları gereken değeri bilmelerine yardımcı olabilir.
PredicateReferences 1:n Koşul başvurularının listesi.

PredicateReferences öğesi aşağıdaki öznitelikleri içerir:

Öznitelik Zorunlu Açıklama
MatchAtLeast Hayır Değerin, girişin kabul edilmesi için en az bu sayıda 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 Bir koşula başvuru.

PredicateReference öğesi aşağıdaki öznitelikleri içerir:

Öznitelik Zorunlu Açıklama
Kimlik Yes Koşul doğrulaması için kullanılan bir 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. Azure AD B2C varsayılan olarak 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 kullanan IsLengthRange IsLengthBetween8And64, parolanın 8 ile 64 karakter arasında olması gerektiğini doğrular.
  • yöntemini kullanarak küçük harfleIncludesCharacters, parolanın küçük harf içerdiğini doğrular.
  • yöntemini kullanarak IncludesCharacters büyük harf, 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, parolanın yalnızca sayı içerdiğini doğrular.
  • yöntemini kullanan MatchesRegex AllowedAADCharacters, parolanın yalnızca geçersiz karakterin sağlandığını doğrular.
  • yöntemini kullanan MatchesRegex DisallowedWhitespace, parolanın bir 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 değerini 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 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>

Azure AD B2C hata iletisini görüntülerken öğelerin nasıl düzenlendiğinden aşağıdakiler gösterilmektedir:

Predicate ve PredicateGroup 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