Azure Active Directory B2C カスタム ポリシーで Azure Active Directory 検証技術プロファイルを定義します。Define an Azure Active Directory technical profile in an Azure Active Directory B2C custom policy

注意

Azure Active Directory B2C で、カスタム ポリシーは、主に、複雑なシナリオに取り組む用途向けに設計されています。In Azure Active Directory B2C, custom policies are designed primarily to address complex scenarios. ほとんどのシナリオで、組み込みユーザー フローを使用することをお勧めします。For most scenarios, we recommend that you use built-in user flows.

Azure Active Directory B2C (Azure AD B2C) は、Azure Active Directory ユーザー管理をサポートしています。Azure Active Directory B2C (Azure AD B2C) provides support for the Azure Active Directory user management. この記事では、この標準化されたプロトコルをサポートするクレーム プロバイダーとやりとりするための、技術プロファイルの詳細について説明します。This article describes the specifics of a technical profile for interacting with a claims provider that supports this standardized protocol.

ProtocolProtocol

Protocol 要素の Name 属性は Proprietary に設定する必要があります。The Name attribute of the Protocol element needs to be set to Proprietary. handler 属性には、プロトコル ハンドラー アセンブリ Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null の完全修飾名が含まれている必要があります。The handler attribute must contain the fully qualified name of the protocol handler assembly Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.

次の カスタム ポリシー スターター パック Azure AD 技術プロファイルには、AAD-Common 技術プロファイルが含まれています。Following custom policy starter pack Azure AD technical profiles include the AAD-Common technical profile. Azure AD 技術プロファイルではプロトコルが指定されていません。これは、プロトコルが AAD-Common 技術プロファイルで構成されているためです。The Azure AD technical profiles don't specify the protocol because the protocol is configured in the AAD-Common technical profile:

  • AAD-UserReadUsingAlternativeSecurityId および AAD-UserReadUsingAlternativeSecurityId-NoError - ディレクトリ内のソーシャル アカウントを検索します。AAD-UserReadUsingAlternativeSecurityId and AAD-UserReadUsingAlternativeSecurityId-NoError - Look up a social account in the directory.
  • AAD-UserWriteUsingAlternativeSecurityId - 新しいソーシャル アカウントを作成します。AAD-UserWriteUsingAlternativeSecurityId - Create a new social account.
  • AAD-UserReadUsingEmailAddress - ディレクトリ内のローカル アカウントを検索します。AAD-UserReadUsingEmailAddress - Look up a local account in the directory.
  • AAD-UserWriteUsingLogonEmail - 新しいローカル アカウントを作成します。AAD-UserWriteUsingLogonEmail - Create a new local account.
  • AAD-UserWritePasswordUsingObjectId - ローカル アカウントのパスワードを更新します。AAD-UserWritePasswordUsingObjectId - Update a password of a local account.
  • AAD-UserWriteProfileUsingObjectId - ローカルまたはソーシャル アカウントのユーザー プロファイルを更新します。AAD-UserWriteProfileUsingObjectId - Update a user profile of a local or social account.
  • AAD-UserReadUsingObjectId - ローカルまたはソーシャル アカウントのユーザー プロファイルを読み取ります。AAD-UserReadUsingObjectId - Read a user profile of a local or social account.
  • AAD-UserWritePhoneNumberUsingObjectId - ローカルまたはソーシャル アカウントの MFA 電話番号を書き込みます。AAD-UserWritePhoneNumberUsingObjectId - Write the MFA phone number of a local or social account

次の例は、AAD-Common 技術プロファイルを示しています。The following example shows the AAD-Common technical profile:

<TechnicalProfile Id="AAD-Common">
  <DisplayName>Azure Active Directory</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.AzureActiveDirectoryProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />

  <CryptographicKeys>
    <Key Id="issuer_secret" StorageReferenceId="B2C_1A_TokenSigningKeyContainer" />
  </CryptographicKeys>

  <!-- We need this here to suppress the SelfAsserted provider from invoking SSO on validation profiles. -->
  <IncludeInSso>false</IncludeInSso>
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" />
</TechnicalProfile>

InputClaimsInputClaims

InputClaims 要素には、ディレクトリ内のアカウントを検索したり、新しいものを作成したりするために使用される要求が含まれています。The InputClaims element contains a claim, which is used to look up an account in the directory, or create a new one. すべての Azure AD 技術プロファイルには、InputClaim 要素が入力要求コレクションに 1 つだけ存在する必要があります。There must be exactly one InputClaim element in the input claims collection for all Azure AD technical profiles. ポリシーに定義されている要求の名前を、Azure Active Directory で定義されている名前にマップすることが必要になる場合があります。You may need to map the name of the claim defined in your policy to the name defined in Azure Active Directory.

既存のユーザー アカウントの読み取り、更新、または削除を行う場合、入力要求は Azure AD ディレクトリ内のアカウントを一意に識別するキーです。To read, update, or delete an existing user account, the input claim is a key that uniquely identifies the account in Azure AD directory. たとえば、objectIduserPrincipalNamesignInNames.emailAddresssignInNames.userNamealternativeSecurityId などです。For example, objectId, userPrincipalName, signInNames.emailAddress, signInNames.userName, or alternativeSecurityId.

新しいユーザー アカウントを作成する場合、入力要求はローカルまたはフェデレーション アカウントを一意に識別するキーです。To create a new user account, the input claim is a key that uniquely identifies a local or federated account. たとえば、ローカル アカウントの場合、signInNames.emailAddresssignInNames.userName です。For example, local account: signInNames.emailAddress, or signInNames.userName. フェデレーション アカウントの場合は、alternativeSecurityId です。For a federated account: the alternativeSecurityId.

InputClaimsTransformations 要素には、入力要求を変更したり新しいものを生成するために使用される、入力要求変換の要素のコレクションを含めることができます。The InputClaimsTransformations element may contain a collection of input claims transformation elements that are used to modify the input claim or generate new one.

OutputClaimsOutputClaims

OutputClaims 要素には、Azure AD 技術プロファイルによって返された要求の一覧が含まれています。The OutputClaims element contains a list of claims returned by the Azure AD technical profile. ポリシーに定義されている要求の名前を、Azure Active Directory で定義されている名前にマップすることが必要になる場合があります。You may need to map the name of the claim defined in your policy to the name defined in Azure Active Directory. また、DefaultValue 属性を設定している限り、Azure Active Directory によって返されない要求を含めることもできます。You can also include claims that aren't returned by the Azure Active Directory, as long as you set the DefaultValue attribute.

OutputClaimsTransformations 要素には、出力要求を修正したり新しい要求を生成するために使用される、OutputClaimsTransformation 要素のコレクションが含まれている場合があります。The OutputClaimsTransformations element may contain a collection of OutputClaimsTransformation elements that are used to modify the output claims or generate new ones.

たとえば、AAD-UserWriteUsingLogonEmail 技術プロファイルはローカル アカウントを作成し、以下の要求を返します。For example, the AAD-UserWriteUsingLogonEmail technical profile creates a local account and returns the following claims:

  • objectId、新しいアカウントの識別子ですobjectId, which is identifier of the new account
  • newUser、ユーザーが新規であるかどうかを示しますnewUser, which indicates whether the user is new
  • authenticationSource、認証を localAccountAuthentication に設定しますauthenticationSource, which sets authentication to localAccountAuthentication
  • userPrincipalName、新しいアカウントのユーザー プリンシパル名ですuserPrincipalName, which is the user principal name of the new account
  • signInNames.emailAddress、アカウントのサインイン名で、email 入力要求に似ていますsignInNames.emailAddress, which is the account sign-in name, similar to the email input claim
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="objectId" />
  <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
  <OutputClaim ClaimTypeReferenceId="userPrincipalName" />
  <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
</OutputClaims>

PersistedClaimsPersistedClaims

PersistedClaims 要素には、ポリシー内の ClaimsSchema セクションに既に定義されている要求の種類と Azure AD 属性名の間の可能なマッピング情報と共に、Azure AD によって保持される必要があるすべての値が含まれています。The PersistedClaims element contains all of the values that should be persisted by Azure AD with possible mapping information between a claim type already defined in the ClaimsSchema section in the policy and the Azure AD attribute name.

新しいローカル アカウントを作成する AAD-UserWriteUsingLogonEmail 技術プロファイルは、以下の要求を保持します。The AAD-UserWriteUsingLogonEmail technical profile, which creates new local account, persists following claims:

  <PersistedClaims>
    <!-- Required claims -->
    <PersistedClaim ClaimTypeReferenceId="email" PartnerClaimType="signInNames.emailAddress" />
    <PersistedClaim ClaimTypeReferenceId="newPassword" PartnerClaimType="password"/>
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="passwordPolicies" DefaultValue="DisablePasswordExpiration" />

    <!-- Optional claims. -->
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>

要求の名前は、Azure AD 属性名を含む PartnerClaimType 属性が指定されている場合を除き、Azure AD 属性の名前です。The name of the claim is the name of the Azure AD attribute unless the PartnerClaimType attribute is specified, which contains the Azure AD attribute name.

操作の要件Requirements of an operation

  • すべての Azure AD 技術プロファイルには、InputClaim 要素が要求バッグに 1 つだけ存在する必要があります。There must be exactly one InputClaim element in the claims bag for all Azure AD technical profiles.
  • ユーザー プロファイル属性に関する記事では、入力要求、出力要求、および永続化された要求で使用できる、サポートされている Azure AD B2C ユーザー プロファイル属性について説明しています。The user profile attributes article describes the supported Azure AD B2C user profile attributes you can use in the input claims, output claims, and persisted claims.
  • 操作が Write または DeleteClaims の場合は、PersistedClaims 要素にも表示する必要があります。If the operation is Write or DeleteClaims, then it must also appear in a PersistedClaims element.
  • userPrincipalName 要求の値の形式は、user@tenant.onmicrosoft.com である必要があります。The value of the userPrincipalName claim must be in the format of user@tenant.onmicrosoft.com.
  • displayName 要求は必須であり、空の文字列にすることはできません。The displayName claim is required and cannot be an empty string.

Azure AD 技術プロバイダー操作Azure AD technical provider operations

ReadRead

読み取り操作は、単一のユーザー アカウントに関するデータを読み取ります。The Read operation reads data about a single user account. 以下の技術プロファイルは、ユーザーの objectId を使用してユーザー アカウントに関するデータを読み取ります。The following technical profile reads data about a user account using the user's objectId:

<TechnicalProfile Id="AAD-UserReadUsingObjectId">
  <Metadata>
    <Item Key="Operation">Read</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>
  </Metadata>
  <IncludeInSso>false</IncludeInSso>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <OutputClaims>

    <!-- Required claims -->
    <OutputClaim ClaimTypeReferenceId="strongAuthenticationPhoneNumber" />

    <!-- Optional claims -->
    <OutputClaim ClaimTypeReferenceId="signInNames.emailAddress" />
    <OutputClaim ClaimTypeReferenceId="displayName" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
    <OutputClaim ClaimTypeReferenceId="givenName" />
    <OutputClaim ClaimTypeReferenceId="surname" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

WriteWrite

書き込み操作は、単一のユーザー アカウントを作成または更新します。The Write operation creates or updates a single user account. 以下の技術プロファイルは、新しいソーシャル アカウントを作成します。The following technical profile creates new social account:

<TechnicalProfile Id="AAD-UserWriteUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">Write</Item>
    <Item Key="RaiseErrorIfClaimsPrincipalAlreadyExists">true</Item>
    <Item Key="UserMessageIfClaimsPrincipalAlreadyExists">You are already registered, please press the back button and sign in instead.</Item>
  </Metadata>
  <IncludeInSso>false</IncludeInSso>
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="CreateOtherMailsFromEmail" />
  </InputClaimsTransformations>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="AlternativeSecurityId" PartnerClaimType="alternativeSecurityId" Required="true" />
  </InputClaims>
  <PersistedClaims>
    <!-- Required claims -->
    <PersistedClaim ClaimTypeReferenceId="alternativeSecurityId" />
    <PersistedClaim ClaimTypeReferenceId="userPrincipalName" />
    <PersistedClaim ClaimTypeReferenceId="mailNickName" DefaultValue="unknown" />
    <PersistedClaim ClaimTypeReferenceId="displayName" DefaultValue="unknown" />

    <!-- Optional claims -->
    <PersistedClaim ClaimTypeReferenceId="otherMails" />
    <PersistedClaim ClaimTypeReferenceId="givenName" />
    <PersistedClaim ClaimTypeReferenceId="surname" />
  </PersistedClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="objectId" />
    <OutputClaim ClaimTypeReferenceId="newUser" PartnerClaimType="newClaimsPrincipalCreated" />
    <OutputClaim ClaimTypeReferenceId="otherMails" />
  </OutputClaims>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
  <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" />
</TechnicalProfile>

DeleteClaimsDeleteClaims

DeleteClaims 操作は、提供された要求の一覧から情報を消去します。The DeleteClaims operation clears the information from a provided list of claims. 以下の技術プロファイルは、要求を削除します。The following technical profile deletes claims:

<TechnicalProfile Id="AAD-DeleteClaimsUsingObjectId">
  <Metadata>
    <Item Key="Operation">DeleteClaims</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <PersistedClaims>
    <PersistedClaim ClaimTypeReferenceId="objectId" />
    <PersistedClaim ClaimTypeReferenceId="Verified.strongAuthenticationPhoneNumber" PartnerClaimType="strongAuthenticationPhoneNumber" />
  </PersistedClaims>
  <OutputClaims />
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

DeleteClaimsPrincipalDeleteClaimsPrincipal

DeleteClaimsPrincipal 操作は、ディレクトリから単一のユーザー アカウントを削除します。The DeleteClaimsPrincipal operation deletes a single user account from the directory. 以下の技術プロファイルは、ユーザー プリンシパル名を使用してディレクトリからユーザー アカウントを削除します。The following technical profile deletes a user account from the directory using the user principal name:

<TechnicalProfile Id="AAD-DeleteUserUsingObjectId">
  <Metadata>
    <Item Key="Operation">DeleteClaimsPrincipal</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="objectId" Required="true" />
  </InputClaims>
  <OutputClaims/>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

以下の技術プロファイルは、alternativeSecurityId を使用してソーシャル ユーザー アカウントを削除します。The following technical profile deletes a social user account using alternativeSecurityId:

<TechnicalProfile Id="AAD-DeleteUserUsingAlternativeSecurityId">
  <Metadata>
    <Item Key="Operation">DeleteClaimsPrincipal</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="alternativeSecurityId" Required="true" />
  </InputClaims>
  <OutputClaims/>
  <IncludeTechnicalProfile ReferenceId="AAD-Common" />
</TechnicalProfile>

MetadataMetadata

属性Attribute RequiredRequired 説明Description
OperationOperation はいYes 実行する操作。The operation to be performed. 指定できる値: ReadWriteDeleteClaims、または DeleteClaimsPrincipalPossible values: Read, Write, DeleteClaims, or DeleteClaimsPrincipal.
RaiseErrorIfClaimsPrincipalDoesNotExistRaiseErrorIfClaimsPrincipalDoesNotExist いいえNo ユーザー オブジェクトがディレクトリに存在しない場合、エラーを発生させます。Raise an error if the user object does not exist in the directory. 指定できる値: true または falsePossible values: true or false.
RaiseErrorIfClaimsPrincipalAlreadyExistsRaiseErrorIfClaimsPrincipalAlreadyExists いいえNo ユーザー オブジェクトが既に存在する場合、エラーを発生させます。Raise an error if the user object already exists. 指定できる値: true または falsePossible values: true or false.
ApplicationObjectIdApplicationObjectId いいえNo 拡張属性のアプリケーション オブジェクト識別子。The application object identifier for extension attributes. 値:アプリケーションの ObjectId。Value: ObjectId of an application. 詳細については、「カスタム プロファイル編集ポリシーのカスタム属性を使用」を参照してください。For more information, see Use custom attributes in a custom profile edit policy.
ClientIdClientId いいえNo サード パーティとしてテナントにアクセスするためのクライアント識別子。The client identifier for accessing the tenant as a third party. 詳細については、「カスタム プロファイル編集ポリシーのカスタム属性を使用」を参照してください。For more information, see Use custom attributes in a custom profile edit policy
IncludeClaimResolvingInClaimsHandlingIncludeClaimResolvingInClaimsHandling   いいえNo 入力と出力の要求について、要求の解決を技術プロファイルに含めるかどうかを指定します。For input and output claims, specifies whether claims resolution is included in the technical profile. 指定できる値: true または false (既定値)。Possible values: true, or false (default). 技術プロファイルで要求リゾルバーを使用する場合は、これを true に設定します。If you want to use a claims resolver in the technical profile, set this to true.

UI 要素UI elements

次の設定を使用して、失敗したときに表示されるエラー メッセージを構成できます。The following settings can be used to configure the error message displayed upon failure. メタデータは、セルフアサート技術プロファイルで構成する必要があります。The metadata should be configured in the self-asserted technical profile. エラー メッセージは、ローカライズできます。The error messages can be localized.

属性Attribute RequiredRequired 説明Description
UserMessageIfClaimsPrincipalAlreadyExistsUserMessageIfClaimsPrincipalAlreadyExists いいえNo エラーが発生する場合 (RaiseErrorIfClaimsPrincipalAlreadyExists 属性の説明を参照)、ユーザー オブジェクトが既に存在する場合にユーザーに表示するメッセージを指定します。If an error is to be raised (see RaiseErrorIfClaimsPrincipalAlreadyExists attribute description), specify the message to show to the user if user object already exists.
UserMessageIfClaimsPrincipalDoesNotExistUserMessageIfClaimsPrincipalDoesNotExist いいえNo エラーが発生する場合 (RaiseErrorIfClaimsPrincipalDoesNotExist 属性の説明を参照)、ユーザー オブジェクトが存在しない場合にユーザーに表示するメッセージを指定します。If an error is to be raised (see the RaiseErrorIfClaimsPrincipalDoesNotExist attribute description), specify the message to show to the user if user object does not exist.

次のステップNext steps

Azure AD 技術プロファイルの使用例については、次の記事を参照してください。See the following article, for example of using Azure AD technical profile: