Predikáty a predikátyValidace

Poznámka

V Azure Active Directory B2C jsou vlastní zásady navržené primárně tak, aby řešily složité scénáře. Ve většině scénářů doporučujeme používat předdefinované toky uživatelů. Pokud jste to neudělali, přečtěte si informace o úvodním balíčku vlastních zásad v tématu Začínáme s vlastními zásadami v Active Directory B2C.

Elementy Predikates a PredicateValidations umožňují provést proces ověření, aby se zajistilo, že se do tenanta Azure Active Directory B2C (Azure AD B2C) zadávají pouze správně formátovaná data.

Následující diagram znázorňuje vztah mezi prvky:

Diagram znázorňující vztah predikátů a ověření predikátů

Predikáty

Element Predikát definuje základní ověření pro kontrolu hodnoty typu deklarace identity a vrátí true nebo false. Ověření se provádí pomocí zadaného elementu Method a sady elementů parametru relevantních pro metodu. Predikát může například zkontrolovat, jestli je délka řetězcové hodnoty deklarace identity v rozsahu minimálních a maximálních zadaných parametrů, nebo jestli hodnota deklarace identity řetězce obsahuje znakovou sadu. UserHelpText Element poskytuje uživatelům chybovou zprávu, pokud kontrola selže. Hodnotu prvku UserHelpText lze lokalizovat pomocí přizpůsobení jazyka.

Element Predikates musí být zobrazen přímo po ClaimsSchema elementu v elementu BuildingBlocks .

Element Predikáty obsahuje následující prvek:

Prvek Výskyty Description
Predikátu 1:n Seznam predikátů.

Element predikát obsahuje následující atributy:

Atribut Povinné Popis
Id Yes Identifikátor, který se používá pro predikát. Tento identifikátor můžou v zásadách používat i jiné prvky.
Metoda Yes Typ metody, který se má použít k ověření. Možné hodnoty: IsLengthRange, MatchesRegex, IncludesCharacters nebo IsDateRange.
Helptext No Pokud se kontrola nezdaří, zobrazí se uživatelům chybová zpráva. Tento řetězec lze lokalizovat pomocí přizpůsobení jazyka.

Element Predikát obsahuje následující prvky:

Prvek Výskyty Description
UserHelpText 0:1 (Zastaralé) Pokud se kontrola nezdaří, zobrazí se uživatelům chybová zpráva.
Parametry 1:1 Parametry pro typ metody ověření řetězce.

Element Parameters obsahuje následující prvky:

Prvek Výskyty Description
Parametr 1:n Parametry pro typ metody ověření řetězce.

Element Parameter obsahuje následující atributy:

Prvek Výskyty Popis
Id 1:1 Identifikátor parametru.

Metody predikátu

IsLengthRange

IsLengthRange Metoda kontroluje, zda je délka řetězcové deklarace hodnoty v rozsahu minimálních a maximálních parametrů zadaných. Podívejte se na živou ukázku této metody predikátu. Element predikátu podporuje následující parametry:

Parametr Povinné Popis
Maximum Yes Maximální počet znaků, které lze zadat.
Minimum Yes Minimální počet znaků, které musí být zadány.

Následující příklad ukazuje IsLengthRange metodu s parametry Minimum a Maximum , které určují rozsah délky řetězce:

<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 Metoda zkontroluje, jestli hodnota deklarace identity řetězce odpovídá regulárnímu výrazu. Podívejte se na živou ukázku této metody predikátu. Element predikátu podporuje následující parametry:

Parametr Povinné Popis
Regulární výraz Yes Vzor regulárního výrazu, který se má shodovat.

Následující příklad ukazuje metodu MatchesRegex s parametrem RegularExpression , který určuje regulární výraz:

<Predicate Id="PIN" Method="MatchesRegex" HelpText="The password must be numbers only.">
  <Parameters>
    <Parameter Id="RegularExpression">^[0-9]+$</Parameter>
  </Parameters>
</Predicate>

IncludesCharacters

IncludesCharacters Metoda kontroluje, zda hodnota deklarace identity řetězce obsahuje znakovou sadu. Podívejte se na živou ukázku této metody predikátu. Element predikátu podporuje následující parametry:

Parametr Povinné Popis
Znaková sada Yes Sada znaků, které lze zadat. Například malá písmena a-z, velká písmena A-Z, číslice 0-9nebo seznam symbolů, například @#$%^&amp;*\-_+=[]{}|\\:',?/~"();!.

Následující příklad ukazuje metodu IncludesCharacters s parametrem CharacterSet , který určuje sadu znaků:

<Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
  <Parameters>
    <Parameter Id="CharacterSet">a-z</Parameter>
  </Parameters>
</Predicate>

IsDateRange

IsDateRange Metoda zkontroluje, jestli je hodnota deklarace data mezi rozsahem zadaných minimálních a maximálních parametrů. Podívejte se na živou ukázku této metody predikátu. Element predikátu podporuje následující parametry:

Parametr Povinné Popis
Maximum Yes Největší možné datum, které lze zadat. Formát data se řídí yyyy-mm-dd konvencí, nebo Today.
Minimum Yes Nejmenší možné datum, které lze zadat. Formát data se řídí yyyy-mm-dd konvencí, nebo Today.

Následující příklad ukazuje metodu IsDateRange s parametry Minimum a Maximum , které určují rozsah dat ve formátu yyyy-mm-dd a 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>

PredikátValidace

Zatímco predikáty definují ověření pro kontrolu typu deklarace identity, PredicateValidations seskupí sadu predikátů a vytvoří ověření vstupu uživatele, které lze použít na typ deklarace identity. Každý PredicateValidation prvek obsahuje sadu PredicateGroup prvky, které obsahují sadu PredicateReference prvky, které odkazují na predikát. Pro úspěšné ověření by hodnota deklarace identity měla projít všemi testy libovolného predikátu v rámci všech PredicateGroup s jejich sadou prvků PredicateReference .

Element PredicateValidations musí být zobrazen přímo za elementem Predikáty v elementu BuildingBlocks .

<PredicateValidations>
  <PredicateValidation Id="">
    <PredicateGroups>
      <PredicateGroup Id="">
        <UserHelpText></UserHelpText>
        <PredicateReferences MatchAtLeast="">
          <PredicateReference Id="" />
          ...
        </PredicateReferences>
      </PredicateGroup>
      ...
    </PredicateGroups>
  </PredicateValidation>
...
</PredicateValidations>

Element PredicateValidations obsahuje následující element:

Prvek Výskyty Popis
PredikátValidation 1:n Seznam ověření predikátu.

Element PredicateValidation obsahuje následující atribut:

Atribut Povinné Popis
Id Yes Identifikátor, který se používá k ověření predikátu. Element ClaimType může použít tento identifikátor v zásadách.

Element PredicateValidation obsahuje následující element:

Prvek Výskyty Popis
PredicateGroups 1:n Seznam skupin predikátů.

Element PredicateGroups obsahuje následující element:

Prvek Výskyty Popis
Skupina predikátů 1:n Seznam predikátů.

Element PredicateGroup obsahuje následující atribut:

Atribut Povinné Popis
Id Yes Identifikátor, který se používá pro skupinu predikátů.

Element PredicateGroup obsahuje následující prvky:

Prvek Výskyty Popis
UserHelpText 0:1 Popis predikátu, který může být užitečný, aby uživatelé věděli, jakou hodnotu mají zadat.
PredikátReference 1:n Seznam odkazů predikátu.

Element PredicateReferences obsahuje následující atributy:

Atribut Povinné Popis
MatchAtLeast No Určuje, že hodnota musí odpovídat alespoň tolika definici predikátu, aby vstup byl přijat. Pokud není hodnota zadána, musí se shodovat se všemi definicemi predikátu.

Element PredicateReferences obsahuje následující prvky:

Prvek Výskyty Popis
PredikátReference 1:n Odkaz na predikát.

Element PredicateReference obsahuje následující atributy:

Atribut Povinné Popis
Id Yes Identifikátor, který se používá k ověření predikátu.

Konfigurace složitosti hesla

Pomocí predikátů a predikátuValidationsInput můžete řídit požadavky na složitost hesel, která uživatel poskytuje při vytváření účtu. ve výchozím nastavení Azure AD B2C používá silná hesla. Azure AD B2C také podporuje možnosti konfigurace pro řízení složitosti hesel, která můžou zákazníci používat. Složitost hesla můžete definovat pomocí těchto elementů predikátu:

  • IsLengthBetween8And64 pomocí IsLengthRange metody ověří, že heslo musí mít délku 8 až 64 znaků.
  • Malá písmena pomocí IncludesCharacters metody ověří, že heslo obsahuje malé písmeno.
  • Velká písmena pomocí IncludesCharacters metody ověří, že heslo obsahuje velké písmeno.
  • Číslo pomocí IncludesCharacters metody ověří, že heslo obsahuje číslici.
  • Symbol pomocí IncludesCharacters metody ověří, že heslo obsahuje jeden z několika znaků symbolu.
  • PIN kód pomocí MatchesRegex metody ověří, že heslo obsahuje pouze čísla.
  • AllowedAADCharacters pomocí MatchesRegex metody ověří, že heslo zadalo pouze neplatný znak.
  • DisallowedWhitespace pomocí MatchesRegex metody ověří, že heslo nezačíná nebo končí prázdným znakem.
<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>

Po definování základních ověření je můžete zkombinovat a vytvořit sadu zásad hesel, které můžete použít ve svých zásadách:

  • SimplePassword ověří hodnoty DisallowedWhitespace, AllowedAADCharacters a IsLengthBetween8And64.
  • StrongPassword ověří DisallowedWhitespace, AllowedAADCharacters, IsLengthBetween8And64. Poslední skupina CharacterClasses spustí další sadu predikátů s nastavenou MatchAtLeast na hodnotu 3. Heslo uživatele musí obsahovat 8 až 16 znaků a tři z následujících znaků: Malá písmena, Velká písmena, Číslo nebo Symbol.
  • CustomPassword ověřuje pouze DisallowedWhitespace, AllowedAADCharacters. Uživatel tak může zadat libovolné heslo s libovolnou délkou, pokud jsou znaky platné.
<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>

V typu deklarace identity přidejte element PredicateValidationReference a zadejte identifikátor jako jedno z ověření predikátu, například SimplePassword, StrongPassword nebo 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>

Následující informace ukazují, jak jsou prvky uspořádány, když Azure AD B2C zobrazí chybovou zprávu:

Diagram s příkladem složitosti hesla predikátu a predikátuGroup

Konfigurace rozsahu dat

S predikáty a predikáteValidations elementy můžete řídit minimální a maximální hodnoty data UserInputType pomocí DateTimeDropdown. Chcete-li to provést, vytvořte predikát s metodou IsDateRange a zadejte minimální a maximální parametry.

<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>

Přidejte predikátValidace s odkazem na DateRange predikát.

<PredicateValidations>
  <PredicateValidation Id="CustomDateRange">
    <PredicateGroups>
      <PredicateGroup Id="DateRangeGroup">
        <PredicateReferences>
          <PredicateReference Id="DateRange" />
        </PredicateReferences>
      </PredicateGroup>
    </PredicateGroups>
  </PredicateValidation>
</PredicateValidations>

Do typu deklarace identity přidejte element PredicateValidationReference a zadejte identifikátor jako 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>

Další kroky