重要
2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください。
注
Azure Active Directory B2C で、カスタム ポリシーは、主に、複雑なシナリオに取り組む用途向けに設計されています。 ほとんどのシナリオで、組み込みユーザー フローを使用することをお勧めします。 まだ行っていない場合は、Active Directory B2C でのカスタム ポリシーの概要に関する記事で、カスタム ポリシー スターター パックの詳細を確認してください。
Predicates 要素と PredicateValidations 要素を使用すると、検証プロセスを実行して、適切な形式のデータのみが Azure Active Directory B2C (Azure AD B2C) テナントに入力されるようにすることができます。
次の図は、要素間の関係を示しています。
述語
Predicate 要素は、要求の種類の値を確認する基本的な検証を定義し、true
またはfalse
を返します。 検証は、指定された Method 要素と 、メソッド に関連する Parameter 要素のセットを使用して行われます。 たとえば、述語は、文字列要求値の長さが指定された最小パラメーターと最大パラメーターの範囲内にあるか、または文字列要求値に文字セットが含まれているかどうかを確認できます。
UserHelpText 要素は、チェックが失敗した場合にユーザーにエラー メッセージを提供します。
UserHelpText 要素の値は、言語のカスタマイズを使用してローカライズできます。
Predicates 要素は、BuildingBlocks 要素内の ClaimsSchema 要素のすぐ後に配置する必要があります。
Predicates 要素には、次の要素が含まれています。
要素 | 発生回数 | 説明 |
---|---|---|
述語 | 1:n | 述語の一覧。 |
Predicate 要素には、次の属性が含まれています。
特性 | 必須 | 説明 |
---|---|---|
ID (アイディー) | イエス | 述語に使用される識別子。 その他の要素は、ポリシーでこの識別子を使用することができます。 |
メソッド | イエス | 検証に使用するメソッドの型。 指定できる値: IsLengthRange、 MatchesRegex、 IncludesCharacters、または IsDateRange。 |
説明テキスト | いいえ | チェックが失敗した場合のユーザーのエラー メッセージ。 この文字列は、言語のカスタマイズを使用してローカライズできます |
Predicate 要素には、次の要素が含まれています。
要素 | 発生回数 | 説明 |
---|---|---|
ユーザーヘルプテキスト | 0:1 | (非推奨)チェックが失敗した場合のユーザーのエラー メッセージ。 |
パラメーター | 1:1 | 文字列検証のメソッド型のパラメーター。 |
Parameters 要素には、次の要素が含まれています。
要素 | 発生回数 | 説明 |
---|---|---|
パラメーター | 1:n | 文字列検証のメソッド型のパラメーター。 |
Parameter 要素には、次の属性が含まれています。
要素 | 発生回数 | 説明 |
---|---|---|
ID (アイディー) | 1:1 | パラメーターの識別子。 |
述語メソッド
IsLengthRange (長さの範囲)
IsLengthRange メソッドは、文字列要求値の長さが、指定された最小パラメーターと最大パラメーターの範囲内にあるかどうかをチェックします。 この述語メソッドの ライブ デモ を確認してください。 述語要素は、次のパラメーターをサポートしています。
パラメーター | 必須 | 説明 |
---|---|---|
最大値 | イエス | 入力できる最大文字数。 |
最小値 | イエス | 入力する必要がある最小文字数。 |
次の例は、文字列の長さの範囲を指定するパラメーター Minimum
と Maximum
を持つ IsLengthRange メソッドを示しています。
<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
を持つRegularExpression
メソッドを示しています。
<Predicate Id="PIN" Method="MatchesRegex" HelpText="The password must be numbers only.">
<Parameters>
<Parameter Id="RegularExpression">^[0-9]+$</Parameter>
</Parameters>
</Predicate>
含まれるキャラクター
IncludesCharacters メソッドは、文字列要求値に文字セットが含まれているかどうかを確認します。 この述語メソッドの ライブ デモ を確認してください。 述語要素は、次のパラメーターをサポートしています。
パラメーター | 必須 | 説明 |
---|---|---|
CharacterSet | イエス | 入力できる文字のセット。 たとえば、小文字の a-z 、大文字の A-Z 、数字の 0-9 、 @#$%^&*\-_+=[]{}|\\:',?/~"();! などの記号の一覧などです。 |
次の例は、一連の文字を指定するパラメーター IncludesCharacters
を持つCharacterSet
メソッドを示しています。
<Predicate Id="Lowercase" Method="IncludesCharacters" HelpText="a lowercase letter">
<Parameters>
<Parameter Id="CharacterSet">a-z</Parameter>
</Parameters>
</Predicate>
日付範囲
IsDateRange メソッドは、指定された最小パラメーターと最大パラメーターの範囲の間に日付要求値があるかどうかをチェックします。 この述語メソッドの ライブ デモ を確認してください。 述語要素は、次のパラメーターをサポートしています。
パラメーター | 必須 | 説明 |
---|---|---|
最大値 | イエス | 入力できる最大の日付。 日付の形式は、 yyyy-mm-dd 規則 ( Today ) に従います。 |
最小値 | イエス | 入力できる最小の日付。 日付の形式は、 yyyy-mm-dd 規則 ( Today ) に従います。 |
次の例は、IsDateRange
とMinimum
の形式で日付範囲を指定するパラメーターのMaximum
と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 は、要求の種類に適用できるユーザー入力の検証を形成する述語のセットをグループ化します。 各 PredicateValidation 要素には、述語を指す PredicateReference 要素のセットを含む PredicateGroup 要素のセットが含まれています。 検証に合格するには、要求の値は、PredicateReference 要素のセットを使用して、すべての PredicateGroup のすべての述語のテストに合格する必要があります。
PredicateValidations 要素は、BuildingBlocks 要素内の Predicates 要素のすぐ後に配置する必要があります。
<PredicateValidations>
<PredicateValidation Id="">
<PredicateGroups>
<PredicateGroup Id="">
<UserHelpText></UserHelpText>
<PredicateReferences MatchAtLeast="">
<PredicateReference Id="" />
...
</PredicateReferences>
</PredicateGroup>
...
</PredicateGroups>
</PredicateValidation>
...
</PredicateValidations>
PredicateValidations 要素には、次の要素が含まれています。
要素 | 発生回数 | 説明 |
---|---|---|
述語検証 | 1:n | 述語の検証の一覧。 |
PredicateValidation 要素には、次の属性が含まれています。
特性 | 必須 | 説明 |
---|---|---|
ID (アイディー) | イエス | 述語の検証に使用される識別子。 ClaimType 要素は、ポリシーでこの識別子を使用できます。 |
PredicateValidation 要素には、次の要素が含まれています。
要素 | 発生回数 | 説明 |
---|---|---|
述語グループ | 1:n | 述語グループの一覧。 |
PredicateGroups 要素には、次の要素が含まれています。
要素 | 発生回数 | 説明 |
---|---|---|
PredicateGroup (述語グループ) | 1:n | 述語の一覧。 |
PredicateGroup 要素には、次の属性が含まれています。
特性 | 必須 | 説明 |
---|---|---|
ID (アイディー) | イエス | 述語グループに使用される識別子。 |
PredicateGroup 要素には、次の要素が含まれています。
要素 | 発生回数 | 説明 |
---|---|---|
ユーザーヘルプテキスト | 0:1 | 入力する必要がある値をユーザーが把握するのに役立つ述語の説明。 |
述語参照 | 1:n | 述語参照の一覧。 |
PredicateReferences 要素には、次の属性が含まれています。
特性 | 必須 | 説明 |
---|---|---|
マッチアットレスト | いいえ | 入力を受け入れるために、値が少なくともその多くの述語定義と一致する必要があることを指定します。 指定しない場合、値はすべての述語定義と一致する必要があります。 |
PredicateReferences 要素には、次の要素が含まれています。
要素 | 発生回数 | 説明 |
---|---|---|
述語参照 | 1:n | 述語への参照。 |
PredicateReference 要素には、次の属性が含まれています。
特性 | 必須 | 説明 |
---|---|---|
ID (アイディー) | イエス | 述語の検証に使用される識別子。 |
パスワードの複雑さを構成する
Predicates と PredicateValidationsInput を使用すると、アカウントの作成時にユーザーが提供するパスワードの複雑さの要件を制御できます。 既定では、Azure AD B2C は強力なパスワードを使用します。 Azure AD B2C では、お客様が使用できるパスワードの複雑さを制御するための構成オプションもサポートされています。 パスワードの複雑さは、次の述語要素を使用して定義できます。
-
メソッドを使用する
IsLengthRange
は、パスワードが 8 ~ 64 文字である必要があることを検証します。 -
メソッドを使用して
IncludesCharacters
を使用して、パスワードに小文字が含まれていることを検証します。 -
メソッドを使用した
IncludesCharacters
では、パスワードに大文字が含まれていることを検証します。 -
メソッドを使用して
IncludesCharacters
を入力し、パスワードに数字が含まれていることを検証します。 -
メソッドを使用する
IncludesCharacters
は、パスワードに複数のシンボル文字のいずれかが含まれていることを検証します。 -
メソッドを使用した
MatchesRegex
では、パスワードに数値のみが含まれていることを検証します。 -
メソッドを使用する
MatchesRegex
は、パスワードが無効な文字のみが指定されたことを検証します。 -
メソッドを使用して
MatchesRegex
を使用すると、パスワードが空白文字で始まるか終わらないか検証されます。
<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>
基本的な検証を定義したら、それらを組み合わせて、ポリシーで使用できる一連のパスワード ポリシーを作成できます。
- SimplePassword は、DisallowedWhitespace、AllowedAADCharacters、IsLengthBetween8And64 を検証します
-
StrongPassword は、DisallowedWhitespace、AllowedAADCharacters、IsLengthBetween8And64 を検証します。 最後のグループ
CharacterClasses
は、MatchAtLeast
が 3 に設定された追加の述語セットを実行します。 ユーザー パスワードは、8 ~ 16 文字、および小文字、大文字、数字、または記号の 3 文字である必要があります。 - CustomPassword は、DisallowedWhitespace、AllowedAADCharacters のみを検証します。 そのため、ユーザーは、文字が有効である限り、任意の長さの任意のパスワードを指定できます。
<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>
要求の種類に PredicateValidationReference 要素を追加し、SimplePassword、StrongPassword、CustomPassword などの述語検証の 1 つとして識別子を指定します。
<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 でエラー メッセージが表示されたときに要素がどのように構成されるかを次に示します。
日付範囲を構成する
Predicates 要素と PredicateValidations 要素を使用すると、を使用して DateTimeDropdown
の日付の最小値と最大値を制御できます。 これを行うには、 メソッドを使用してIsDateRange
を作成し、最小パラメーターと最大パラメーターを指定します。
<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>
述語への参照を含む DateRange
を追加します。
<PredicateValidations>
<PredicateValidation Id="CustomDateRange">
<PredicateGroups>
<PredicateGroup Id="DateRangeGroup">
<PredicateReferences>
<PredicateReference Id="DateRange" />
</PredicateReferences>
</PredicateGroup>
</PredicateGroups>
</PredicateValidation>
</PredicateValidations>
要求の種類に PredicateValidationReference 要素を追加し、識別子を 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>
次のステップ
- 述語の検証を 使用して Azure Active Directory B2C のカスタム ポリシーを使用してパスワードの複雑さを構成 する方法について説明します。