ClaimsSchema

注意

Azure Active Directory B2C で、カスタム ポリシーは、主に、複雑なシナリオに取り組む用途向けに設計されています。 ほとんどのシナリオで、組み込みユーザー フローを使用することをお勧めします。 まだ行っていない場合は、Active Directory B2C でのカスタム ポリシーの概要に関する記事で、カスタム ポリシー スターター パックの詳細を確認してください。

ClaimsSchema要素は、ポリシーの一部として参照可能な要求の種類を定義します。 要求スキーマは、要求を宣言する場所です。 要求は、名、姓、表示名、電話番号などを指定できます。 ClaimsSchema 要素にはClaimType要素の一覧が含まれています。 ClaimType要素に Id属性が含まれており、 それは要求の名前であります。

<BuildingBlocks>
  <ClaimsSchema>
    <ClaimType Id="Id">
      <DisplayName>Surname</DisplayName>
      <DataType>string</DataType>
      <DefaultPartnerClaimTypes>
        <Protocol Name="OAuth2" PartnerClaimType="family_name" />
        <Protocol Name="OpenIdConnect" PartnerClaimType="family_name" />
        <Protocol Name="SAML2" PartnerClaimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname" />
      </DefaultPartnerClaimTypes>
      <UserHelpText>Your surname (also known as family name or last name).</UserHelpText>
      <UserInputType>TextBox</UserInputType>

ClaimType

ClaimType 要素には、次の属性が含まれています。

属性 必須 説明
Id はい 要求の種類に使用される識別子です。 その他の要素は、ポリシーでこの識別子を使用することができます。

ClaimType要素には、次の要素が含まれています。

要素 発生回数 説明
DisplayName 1:1 さまざまな画面上のユーザーに表示されるタイトル。 値をローカライズすることができます。
DataType 1:1 要求の種類です。
DefaultPartnerClaimTypes 0:1 パートナーの既定要求は、指定されたプロトコルに使用する種類です。 InputClaimまたはOutputClaim 要素で指定されているPartnerClaimType内の値を上書きすることができます。 この要素を使用すると、プロトコルの既定の名前を指定できます。
マスク 0:1 要求を表示するときに適用できる、文字をマスクするのに使用されるオプショナルな文字列。 たとえば、電話番号 324-232-4343 をXXX-XXX-4343 としてマスクすることができます。
UserHelpText 0:1 要求の目的を理解するのにユーザーに役立つ種類の説明。 値をローカライズすることができます。
UserInputType 0:1 要求の種類の要求データを手動で入力するときに、ユーザーが利用できるような入力コントロールの種類。 このページの後半で定義されている、ユーザーにより入力された種類を参照してください。
AdminHelpText 0:1 管理者がその目的を理解するのに役立つ要求の種類の説明。
Restriction 0:1 正規表現 (Regex) または許容される値の一覧など、この要求に対する値の制限。 値をローカライズすることができます。
PredicateValidationReference 0:1 PredicateValidationsInput要素への参照。 PredicateValidationReference要素を使用すると、適切な形式のデータのみが入力されていることを確認する検証プロセスを実できます。 詳細については、述語を参照してください。

DataType

DataType 要素は次の値をサポートします。

Type 説明
boolean ブール値 (true または false) を表します。
date 特定の時点を表します。通常は日付で表されます。 date の値は ISO 8601 規則に準拠します。
dateTime 通常、日付や時刻として表現される瞬間を表します。 日付の値は、実行時に ISO 8601 規則に従い、要求としてトークンに発行された場合に UNIX エポック時間に変換されます。
duration 年、月、日、時、分、および秒単位の時間間隔を表します。 形式は PnYnMnDTnHnMnS です。 P は正の値を示し、N は負の値を示します。 nY は、年数の後にリテラル Y が付いたものです。 nMo は、月数の後にリテラル Mo が付いたものです。 nD は、日数の後にリテラル D が付いたものです。 例: P21Y は、21 年を表します。 P1Y2Mo は、1 年 2 か月を表します。 P1Y2Mo5D は、1 年、2 か月、および 5 日を表します。 P1Y2M5DT8H5M620S は、1 年、2 か月、5 日、8 時間、5 分、および 20 秒を表します。
phoneNumber 電話番号を表します。
INT -2,147,483,648 から 2,147,483,647 までの数値を表します
long -9,223,372,036,854,775,808 から 9,223,372,036,854,775,807 までの数値を表します
string テキストを一連の UTF-16 コード単位として表現します。
stringCollection string のコレクションを表します。
userIdentity ユーザー ID を表します。
userIdentityCollection userIdentity のコレクションを表します。

DefaultPartnerClaimTypes

DefaultPartnerClaimTypesには次の要素が含まれることがあります。

要素 発生回数 説明
Protocol 1:n プロトコルとその既定のパートナー要求種類の名前一覧。

Protocol 要素には、次の属性が含まれています。

属性 必須 説明
名前 はい Azure AD B2C によってサポートされている有効なプロトコルの名前。 指定できる値: OAuth1、OAuth2、SAML2、OpenIdConnect。
PartnerClaimType はい 使用する要求種類の名。

次の例で、Identity Experience Framework は SAML2 id プロバイダーまたは証明書利用者アプリケーションと相互作用するときに、 surname要求がhttp://schemas.xmlsoap.org/ws/2005/05/identity/claims/surnameにマップされ、OpenIdConnect と OAuth2 とともに、要求は、family_nameにマップされます。

<ClaimType Id="surname">
  <DisplayName>Surname</DisplayName>
  <DataType>string</DataType>
  <DefaultPartnerClaimTypes>
    <Protocol Name="OAuth2" PartnerClaimType="family_name" />
    <Protocol Name="OpenIdConnect" PartnerClaimType="family_name" />
    <Protocol Name="SAML2" PartnerClaimType="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname" />
  </DefaultPartnerClaimTypes>
</ClaimType>

その結果、Azure AD B2C によって発行された JWT トークンでは、ClaimType 名 surname ではなく family_name が出力されます。

{
  "sub": "6fbbd70d-262b-4b50-804c-257ae1706ef2",
  "auth_time": 1535013501,
  "given_name": "David",
  "family_name": "Williams",
  "name": "David Williams",
}

マスク

マスク 要素には、次の属性が含まれています。

属性 必須 説明
Type はい 要求マスクの種類です。 指定できる値: Simple または RegexSimple値は、単純なテキスト マスクが要求の文字列の先頭部分に適用されることを示します。 Regex値は、正規表現が全体として、要求の文字列に適用されることを示します。 Regex値が指定されている場合、オプショナルな属性も正規表現で定義することが必要となります。
Regex いいえ TypeRegex に設定されている場合、使用される正規表現を指定します。

次の例では PhoneNumber 要求を Simple マスクで構成します。 その他のサンプルについては、要求の簡単なマスクに関するライブ デモをご覧ください。

<ClaimType Id="PhoneNumber">
  <DisplayName>Phone Number</DisplayName>
  <DataType>string</DataType>
  <Mask Type="Simple">XXX-XXX-</Mask>
  <UserHelpText>Your telephone number.</UserHelpText>
</ClaimType>

Identity Experience Framework では、最初の 6 桁の数字を非表示し、電話番号を表示します。

Phone number claim shown in browser with first six digits masked by Xs

次の例では AlternateEmail 要求を Regex マスクで構成します。 その他のサンプルについては、Regex マスクに関するライブ デモをご覧ください。

<ClaimType Id="AlternateEmail">
  <DisplayName>Please verify the secondary email linked to your account</DisplayName>
  <DataType>string</DataType>
  <Mask Type="Regex" Regex="(?&lt;=.).(?=.*@)">*</Mask>
  <UserInputType>Readonly</UserInputType>
</ClaimType>

Identity Experience Framework では、電子メールアドレスと電子メールのドメイン名の最初の文字のみを表示します。

Email claim shown in browser with characters masked by asterisks

Restriction

制限要素は、次の属性を含めることがあります。

属性 必須 説明
MergeBehavior いいえ 同じ識別子を持つ親ポリシー内の ClaimType に列挙値をマージするために使用するメソッド。 基本ポリシーで指定された要求を上書きする場合は、この属性を使用します。 指定できる値: AppendPrepend、または ReplaceAllAppend値は、親ポリシーで指定したコレクションの末尾に追加する必要があるデータのコレクション。 Prepend値は、親ポリシーで指定したコレクションの前に追加する必要があるデータのコレクション。 ReplaceAll値が無視される親ポリシーで指定されたデータのコレクション。

制限 要素には、次の要素が含まれています。

要素 発生回数 説明
列挙 1:n ドロップダウン リストの値など、要求に指定するオプションを選択するためにユーザーのユーザー インターフェイスで使用可能なオプションです。
Pattern 1:1 使用できる正規表現。

列挙

Enumeration 要素は、ユーザーが要求についてユーザー インターフェイスで選択可能なオプション (CheckboxMultiSelectDropdownSingleSelect、または RadioSingleSelect の値など) を定義します。 または、LocalizedCollections 要素を使用して、使用可能なオプションを定義してローカライズすることもできます。 要求 Enumeration コレクションから項目を検索するには、GetMappedValueFromLocalizedCollection 要求変換を使用します。

列挙型要素には、次の属性が含まれています。

属性 必須 説明
Text はい このオプションのユーザー インターフェイスでユーザーに表示される表示文字列。
Value はい このオプションの選択に関連付けられている要求の値。
SelectByDefault いいえ このオプションが既定で UI で選択するかどうかを示します。 指定できる値True または False。

次の例では、市区町村のドロップダウン リストの要求を設定し、既定値を New York に設定します。 その他のサンプルについては、要求の制限リストに関するライブ デモをご覧ください。

<ClaimType Id="city">
  <DisplayName>city where you work</DisplayName>
  <DataType>string</DataType>
  <UserInputType>DropdownSingleSelect</UserInputType>
  <Restriction>
    <Enumeration Text="Bellevue" Value="bellevue" SelectByDefault="false" />
    <Enumeration Text="Redmond" Value="redmond" SelectByDefault="false" />
    <Enumeration Text="New York" Value="new-york" SelectByDefault="true" />
  </Restriction>
</ClaimType>

既定値は、ニューヨークに設定されている市区町村ドロップダウン リスト。

Dropdown control rendered in browser and showing default value

Pattern

パターン要素には、次の属性が含まれることがあります。

属性 必須 説明
RegularExpression はい この種類の要求が有効になるのに一致する必要がある正規表現。
HelpText いいえ 正規表現のチェックが失敗した場合にユーザーに表示されるエラー メッセージ。

次の例では、電子メール要求を正規表現入力検証とヘルプ テキストとともに設定します。

<ClaimType Id="email">
  <DisplayName>Email Address</DisplayName>
  <DataType>string</DataType>
  <DefaultPartnerClaimTypes>
  <Protocol Name="OpenIdConnect" PartnerClaimType="email" />
  </DefaultPartnerClaimTypes>
  <UserHelpText>Email address that can be used to contact you.</UserHelpText>
  <UserInputType>TextBox</UserInputType>
  <Restriction>
    <Pattern RegularExpression="^[a-zA-Z0-9.+!#$%&amp;'^_`{}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$" HelpText="Please enter a valid email address." />
  </Restriction>
</ClaimType>

Identity Experience Framework は、電子メールの入力検証の形式を表示します。

TextBox showing error message triggered by regex restriction

UserInputType

Azure AD B2C では、さまざまなクレームの種類の要求データを手動で入力するときに使用できるテキスト ボックス、パスワード、およびドロップダウン リストなど、ユーザー入力の種類をサポートしています。 セルフ アサートの技術プロファイルおよび表示コントロールを使用してユーザーから情報を収集する時に UserInputType を指定する必要があります。

ユーザー入力の種類に関するライブ デモをご覧ください。

UserInputType 要素で使用できるユーザー入力の種類:

UserInputType サポートされる ClaimType 説明
CheckboxMultiSelect string 複数選択ドロップダウン ボックス。 要求の値は、選択された値のコンマ区切り文字列で表されます。
DateTimeDropdown date, dateTime 日、月、および年を選択するドロップダウン。
DropdownSingleSelect string 単一選択ドロップダウン ボックス。 要求の値は、選択された値です。
EmailBox string 電子メールの入力フィールド。
段落 booleandatedateTimedurationintlongstring 段落タグ内のテキストのみを表示するフィールド。
Password string パスワード テキスト ボックス。
RadioSingleSelect string ラジオ ボタンのコレクション。 要求の値は、選択された値です。
Readonly booleandatedateTimedurationintlongstring 読み取り専用テキスト ボックス。
TextBox booleanintstring 1 行のテキスト ボックス。

TextBox

TextBoxユーザー入力の種類が 1 行のテキスト ボックスを表示するために使用します。

TextBox showing properties specified in claim type

<ClaimType Id="displayName">
  <DisplayName>Display Name</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Your display name.</UserHelpText>
  <UserInputType>TextBox</UserInputType>
</ClaimType>

EmailBox

EmailBoxユーザー入力の種類が基本的な電子メールの入力フィールドを提供するために使用します。

EmailBox showing properties specified in claim type

<ClaimType Id="email">
  <DisplayName>Email Address</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Email address that can be used to contact you.</UserHelpText>
  <UserInputType>EmailBox</UserInputType>
  <Restriction>
    <Pattern RegularExpression="^[a-zA-Z0-9.+!#$%&amp;'+^_`{}~-]+(?:\.[a-zA-Z0-9!#$%&amp;'+^_`{}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$" HelpText="Please enter a valid email address." />
  </Restriction>
</ClaimType>

Password

パスワードユーザー入力の種類は、ユーザーが入力したパスワードを記録するために使用します。

Using claim type with password

<ClaimType Id="password">
  <DisplayName>Password</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Enter password</UserHelpText>
  <UserInputType>Password</UserInputType>
</ClaimType>

DateTimeDropdown

DateTimeDropdownユーザー入力の種類は、日、月、および年を選択するドロップダウン リストのセットを提供するために使用します。 述語および PredicateValidations 要素を使用すると、日付の最小値と最大値を制御できます。 詳細については、述語および PredicateValidations日付範囲を構成するセクションを参照してください。

Using claim type with datetimedropdown

<ClaimType Id="dateOfBirth">
  <DisplayName>Date Of Birth</DisplayName>
  <DataType>date</DataType>
  <UserHelpText>The date on which you were born.</UserHelpText>
  <UserInputType>DateTimeDropdown</UserInputType>
</ClaimType>

RadioSingleSelect

RadioSingleSelectユーザー入力の種類はユーザーが 1 つのオプションを選択できるようラジオ ボタンのコレクションを提供するために使用します。

Using claim type with radiodsingleselect

<ClaimType Id="color">
  <DisplayName>Preferred color</DisplayName>
  <DataType>string</DataType>
  <UserInputType>RadioSingleSelect</UserInputType>
  <Restriction>
    <Enumeration Text="Blue" Value="Blue" SelectByDefault="false" />
    <Enumeration Text="Green " Value="Green" SelectByDefault="false" />
    <Enumeration Text="Orange" Value="Orange" SelectByDefault="true" />
  </Restriction>
</ClaimType>

DropdownSingleSelectユーザー入力の種類はユーザーが 1 つのオプションを選択できるようドロップダウンボックスを提供するために使用します。

Using claim type with dropdownsingleselect

<ClaimType Id="city">
  <DisplayName>City where you work</DisplayName>
  <DataType>string</DataType>
  <UserInputType>DropdownSingleSelect</UserInputType>
  <Restriction>
    <Enumeration Text="Bellevue" Value="bellevue" SelectByDefault="false" />
    <Enumeration Text="Redmond" Value="redmond" SelectByDefault="false" />
    <Enumeration Text="New York" Value="new-york" SelectByDefault="true" />
  </Restriction>
</ClaimType>

CheckboxMultiSelect

CheckboxMultiSelectユーザー入力の種類はユーザーが 複数のオプションを選択できるようチェックボックスのコレクションを提供するために使用します。

Using claim type with checkboxmultiselect

<ClaimType Id="languages">
  <DisplayName>Languages you speak</DisplayName>
  <DataType>string</DataType>
  <UserInputType>CheckboxMultiSelect</UserInputType>
  <Restriction>
    <Enumeration Text="English" Value="English" SelectByDefault="true" />
    <Enumeration Text="France " Value="France" SelectByDefault="false" />
    <Enumeration Text="Spanish" Value="Spanish" SelectByDefault="false" />
  </Restriction>
</ClaimType>

Readonly

Readonlyユーザー入力の種類は、要求と値を表示する読み取り専用フィールドを提供するために使用します。

Using claim type with readonly

<ClaimType Id="membershipNumber">
  <DisplayName>Membership number</DisplayName>
  <DataType>string</DataType>
  <UserHelpText>Your membership number (read only)</UserHelpText>
  <UserInputType>Readonly</UserInputType>
</ClaimType>

段落

段落ユーザー入力の種類は、段落タグ内のテキストだけを表示するフィールドを提供するために使用します。 たとえば、 <p>テキスト</p>。 セルフアサート技術プロファイルの段落ユーザー入力の種類 OutputClaim は、Required 属性 false (既定値) を設定する必要があります。

Using claim type with paragraph

<ClaimType Id="responseMsg">
  <DisplayName>Error message: </DisplayName>
  <DataType>string</DataType>
  <AdminHelpText>A claim responsible for holding response messages to send to the relying party</AdminHelpText>
  <UserHelpText>A claim responsible for holding response messages to send to the relying party</UserHelpText>
  <UserInputType>Paragraph</UserInputType>
</ClaimType>