Sdílet prostřednictvím


Predikáty a predikátyValidace

Poznámka:

V Azure Active Directory B2C jsou vlastní zásady navržené především pro řešení složitých scénářů. Ve většině scénářů doporučujeme používat integrované 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 ve službě 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ě vytvořená data.

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

Diagram znázorňující vztah predikátů a predikátů

Predikáty

Predikát element 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 hodnoty deklarace identity řetězce v rozsahu zadaných minimálních a maximálních parametrů nebo jestli hodnota deklarace identity řetězce obsahuje znakovou sadu. Element UserHelpText poskytuje uživatelům chybovou zprávu, pokud se kontrola nezdaří. Hodnotu elementu UserHelpText lze lokalizovat pomocí přizpůsobení jazyka.

Predikates element musí být zobrazen přímo za ClaimsSchema element uvnitř BuildingBlocks elementu.

Element Predikates obsahuje následující prvek:

Element (Prvek) Výskyty Popis
Predikátu 1:n Seznam predikátů.

Predikát element obsahuje následující atributy:

Atribut Požadováno Popis
Id Ano Identifikátor, který se používá pro predikát. Ostatní prvky můžou tento identifikátor použít v zásadách.
metoda Ano 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.

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

Element (Prvek) Výskyty Popis
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:

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

Element Parameter obsahuje následující atributy:

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

Predikátové metody

IsLengthRange

IsLengthRange metoda kontroluje, zda délka řetězcové deklarace hodnoty je v rozsahu minimální a maximální parametry zadané. Podívejte se na živou ukázku této predikátové metody. Predikát element podporuje následující parametry:

Parametr Požadováno Popis
Maximum Ano Maximální počet znaků, které lze zadat.
Minimum Ano Minimální počet znaků, které musí být zadány.

Následující příklad ukazuje IsLengthRange metoda 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

Metoda MatchesRegex zkontroluje, zda hodnota deklarace identity řetězce odpovídá regulárnímu výrazu. Podívejte se na živou ukázku této predikátové metody. Predikát element podporuje následující parametry:

Parametr Požadováno Popis
RegularExpression Ano 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

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

Parametr Požadováno Popis
Znaková sada Ano 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

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

Parametr Požadováno Popis
Maximum Ano Největší možné datum, které lze zadat. Formát data se řídí yyyy-mm-dd konvencí nebo Today.
Minimum Ano 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 kalendářních 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átValidations

Zatímco predikáty definují ověření pro kontrolu typu deklarace identity, predikateValidations seskupuje sadu predikátů pro vytvoření ověření vstupu uživatele, které lze použít u typu deklarace identity. Každý predikateValidation element obsahuje sadu PredicateGroup elementy, které obsahují sadu PredicateReference prvků, které odkazuje na predikát. Pokud chcete projít ověřením, hodnota deklarace by měla projít všechny testy jakéhokoli predikátu ve všech predikáteskupinách s jejich sadou predikáteReference prvků.

PredicateValidations element musí být zobrazen přímo za predikates element v rámci BuildingBlocks elementu.

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

PredicateValidations element obsahuje následující prvek:

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

PredicateValidation element obsahuje následující atribut:

Atribut Požadováno Popis
Id Ano Identifikátor, který se používá pro ověření predikátu. Element ClaimType může použít tento identifikátor v zásadě.

PredicateValidation element obsahuje následující prvek:

Element (Prvek) Výskyty Popis
Skupiny predikátů 1:n Seznam predikátů.

Element PredicateGroups obsahuje následující prvek:

Element (Prvek) Výskyty Popis
PredikátGroup 1:n Seznam predikátů.

Element PredicateGroup obsahuje následující atribut:

Atribut Požadováno Popis
Id Ano Identifikátor, který se používá pro skupinu predikátů.

PredicateGroup element obsahuje následující prvky:

Element (Prvek) Výskyty Popis
UserHelpText 0:1 Popis predikátu, který může být užitečný pro uživatele, aby věděli, jakou hodnotu mají zadávat.
PredikátReference 1:n Seznam odkazů na predikát.

Element PredicateReferences obsahuje následující atributy:

Atribut Požadováno Popis
MatchAtLeast No Určuje, že hodnota se musí shodovat alespoň s mnoha definicemi predikátu pro vstup, který má být přijat. Pokud není zadána, musí hodnota odpovídat všem definicám predikátu.

Element PredicateReferences obsahuje následující prvky:

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

Element PredicateReference obsahuje následující atributy:

Atribut Požadováno Popis
Id Ano Identifikátor, který se používá pro ověření predikátu.

Konfigurace složitosti hesla

Pomocí predikátů a predikátůValidationsInput můžete řídit požadavky na složitost hesel poskytovaných uživatelem při vytváření účtu. Azure AD B2C ve výchozím nastavení 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 predikátových prvků:

  • IsLengthBetween8And64 pomocí IsLengthRange metody ověří, že heslo musí být mezi 8 a 64 znaky.
  • Malá písmena pomocí IncludesCharacters metody ověří, že heslo obsahuje malá písmena.
  • 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 jenom čísla.
  • AllowedAADCharacters using the MatchesRegex method, ověří, že heslo byl poskytnut 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ěří nepovolené hodnotyWhitespace, AllowedAADCharacters a IsLengthBetween8And64.
  • StrongPassword ověří nepovolený prostorWhitespace, AllowedAADCharacters, IsLengthBetween8And64. Poslední skupina CharacterClasses spustí další sadu predikátů s nastavenou MatchAtLeast na hodnotu 3. Uživatelské heslo musí mít 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 nepovolené znakyWhitespace, AllowedAADCharacters. Uživatel tak může zadat jakékoli 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>

Do 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í příklad ukazuje, jak jsou prvky uspořádané, když Azure AD B2C zobrazí chybovou zprávu:

Diagram složitosti hesel 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. Uděláte to tak, že vytvoříte predikát s metodou IsDateRange a poskytnete 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átValidation s odkazem DateRange na predikát.

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

V typu deklarace identity přidejte PredicateValidationReference element 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