Azure Active Directory B2C カスタム ポリシーで OpenID Connect 技術プロファイルを定義するDefine an OpenID Connect 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) では、OpenID Connect プロトコルの ID プロバイダーのサポートを提供しています。Azure Active Directory B2C (Azure AD B2C) provides support for the OpenID Connect protocol identity provider. OpenID Connect 1.0 は OAuth 2.0 の上に ID レイヤーを定義し、現在の認証プロトコルにおいて最先端のものとなっています。OpenID Connect 1.0 defines an identity layer on top of OAuth 2.0 and represents the state of the art in modern authentication protocols. OpenID Connect 技術プロファイルを使用して、OpenID Connect base の ID プロバイダー (Azure AD など) とフェデレーションできます。With an OpenID Connect technical profile, you can federate with an OpenID Connect based identity provider, such as Azure AD. ID プロバイダーとのフェデレーションにより、ユーザーは、既存のソーシャル ID またはエンタープライズ ID でサインインできます。Federating with an identity provider allows users to sign in with their existing social or enterprise identities.

ProtocolProtocol

Protocol 要素の Name 属性は OpenIdConnect に設定する必要があります。The Name attribute of the Protocol element needs to be set to OpenIdConnect. たとえば、MSA-OIDC 技術プロファイル用のプロトコルは OpenIdConnect です。For example, the protocol for the MSA-OIDC technical profile is OpenIdConnect:

<TechnicalProfile Id="MSA-OIDC">
  <DisplayName>Microsoft Account</DisplayName>
  <Protocol Name="OpenIdConnect" />
  ...

入力クレームInput claims

InputClaimsInputClaimsTransformations の要素は不要です。The InputClaims and InputClaimsTransformations elements are not required. ただし、追加のパラメーターを ID プロバイダーに送信する場合があります。But you may want to send additional parameters to your identity provider. 次の例では、値が contoso.com である domain_hint クエリ文字列パラメーターを認可要求に追加しています。The following example adds the domain_hint query string parameter with the value of contoso.com to the authorization request.

<InputClaims>
  <InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="contoso.com" />
</InputClaims>

出力クレームOutput claims

OutputClaims 要素には、OpenID Connect ID プロバイダーにより返される要求の一覧が存在します。The OutputClaims element contains a list of claims returned by the OpenID Connect identity provider. お使いのポリシーに定義されている要求の名前を、ID プロバイダーで定義されている名前にマップする必要があるかもしれません。You may need to map the name of the claim defined in your policy to the name defined in the identity provider. DefaultValue 属性を設定している限り、ID プロバイダーにより返されない要求を追加することもできます。You can also include claims that aren't returned by the identity provider, 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.

次の例は、Microsoft アカウント プロバイダーにより返される要求を示しています。The following example shows the claims returned by the Microsoft Account identity provider:

  • issuerUserId 要求にマップされている sub 要求。The sub claim that is mapped to the issuerUserId claim.
  • displayName 要求にマップされている name 要求。The name claim that is mapped to the displayName claim.
  • どの名前にもマップされていない emailThe email without name mapping.

また、技術プロファイルは、ID プロバイダーにより返されない要求も返します。The technical profile also returns claims that aren't returned by the identity provider:

  • ID プロバイダーの名前を保持する identityProvider 要求。The identityProvider claim that contains the name of the identity provider.
  • 既定値の socialIdpAuthentication である authenticationSource 要求。The authenticationSource claim with a default value of socialIdpAuthentication.
<OutputClaims>
  <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="live.com" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
  <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
  <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
  <OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>

MetadataMetadata

属性Attribute RequiredRequired 説明Description
client_idclient_id はいYes ID プロバイダーのアプリケーション識別子。The application identifier of the identity provider.
IdTokenAudienceIdTokenAudience いいえNo id_token の対象ユーザー。The audience of the id_token. 指定される場合、Azure AD B2C により、ID プロバイダーによって返されたトークンの aud クレームが IdTokenAudience メタデータで指定されているものと等しいかどうかを確認します。If specified, Azure AD B2C checks whether the aud claim in a token returned by the identity provider is equal to the one specified in the IdTokenAudience metadata.
METADATAMETADATA はいYes OpenID の既知の構成エンドポイントとも呼ばれる OpenID Connect ID プロバイダー構成ドキュメントを指す URL。A URL that points to an OpenID Connect identity provider configuration document, which is also known as OpenID well-known configuration endpoint. URL には、テナント名に置き換えられる {tenant} 式を含めることができます。The URL can contain the {tenant} expression, which is replaced with the tenant name.
authorization_endpointauthorization_endpoint いいえNo OpenID Connect ID プロバイダー構成の承認エンドポイントを指す URL。A URL that points to an OpenID Connect identity provider configuration authorization endpoint. authorization_endpoint メタデータの値は、OpenID の既知の構成エンドポイントで指定された authorization_endpoint よりも優先されます。The value of authorization_endpoint metadata takes precedence over the authorization_endpoint specified in the OpenID well-known configuration endpoint. URL には、テナント名に置き換えられる {tenant} 式を含めることができます。The URL can contain the {tenant} expression, which is replaced with the tenant name.
発行者issuer いいえNo OpenID Connect ID プロバイダーの一意識別子。The unique identifier of an OpenID Connect identity provider. issuer メタデータの値は、OpenID の既知の構成エンドポイントで指定された issuer よりも優先されます。The value of issuer metadata takes precedence over the issuer specified in the OpenID well-known configuration endpoint. 指定される場合、Azure AD B2C により、ID プロバイダーによって返されたトークンの iss クレームが issuer メタデータで指定されているものと等しいかどうかを確認します。If specified, Azure AD B2C checks whether the iss claim in a token returned by the identity provider is equal to the one specified in the issuer metadata.
ProviderNameProviderName いいえNo ID プロバイダーの名前。The name of the identity provider.
response_typesresponse_types いいえNo OpenID Connect Core 1.0 仕様に準拠した応答の種類。The response type according to the OpenID Connect Core 1.0 specification. 指定できる値: id_tokencode、または tokenPossible values: id_token, code, or token.
response_moderesponse_mode いいえNo Azure AD B2C に結果を返信するために、ID プロバイダーが使用するメソッド。The method that the identity provider uses to send the result back to Azure AD B2C. 指定できる値: queryform_post (既定)、または fragmentPossible values: query, form_post (default), or fragment.
scopescope いいえNo OpenID Connect Core 1.0 の仕様に従って定義される、要求の範囲。The scope of the request that is defined according to the OpenID Connect Core 1.0 specification. たとえば、openidprofileemail などです。Such as openid, profile, and email.
HttpBindingHttpBinding いいえNo アクセス トークンと要求トークンのエンドポイントに予期される HTTP バインド。The expected HTTP binding to the access token and claims token endpoints. 指定できる値: GET または POSTPossible values: GET or POST.
ValidTokenIssuerPrefixesValidTokenIssuerPrefixes いいえNo Azure Active Directory などのマルチテナント ID プロバイダーを使用するときに、各テナントにサインインするために使用できるキー。A key that can be used to sign in to each of the tenants when using a multi-tenant identity provider such as Azure Active Directory.
UsePolicyInRedirectUriUsePolicyInRedirectUri いいえNo リダイレクト URI を構築するときにポリシーを使用するかどうかを示します。Indicates whether to use a policy when constructing the redirect URI. ID プロバイダーでアプリケーションを構成するときは、リダイレクト URI を指定する必要があります。When you configure your application in the identity provider, you need to specify the redirect URI. リダイレクト URI は Azure AD B2C を指します (https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp)。The redirect URI points to Azure AD B2C, https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. false を指定した場合は、使用するポリシーごとにリダイレクト URI を追加する必要があります。If you specify false, you need to add a redirect URI for each policy you use. (例: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp)。For example: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp.
MarkAsFailureOnStatusCode5xxMarkAsFailureOnStatusCode5xx いいえNo Http 状態コードが 5xx の範囲にある場合、外部サービスへの要求を失敗としてマークする必要があるかどうかを示します。Indicates whether a request to an external service should be marked as a failure if the Http status code is in the 5xx range. 既定では、 falseです。The default is false.
DiscoverMetadataByTokenIssuerDiscoverMetadataByTokenIssuer いいえNo JWT トークンで発行者を使用して OIDC メタデータを検出する必要があるかどうかを示します。Indicates whether the OIDC metadata should be discovered by using the issuer in the JWT token.
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. メタデータは、OpenID Connect 技術プロファイルで構成する必要があります。The metadata should be configured in the OpenID Connect technical profile. エラー メッセージは、ローカライズできます。The error messages can be localized.

属性Attribute RequiredRequired 説明Description
UserMessageIfClaimsPrincipalDoesNotExistUserMessageIfClaimsPrincipalDoesNotExist いいえNo 指定されたユーザー名のアカウントがディレクトリに見つからなかった場合に、ユーザーに表示するメッセージ。The message to display to the user if an account with the provided username not found in the directory.
UserMessageIfInvalidPasswordUserMessageIfInvalidPassword いいえNo パスワードが正しくない場合にユーザーに表示するメッセージ。The message to display to the user if the password is incorrect.
UserMessageIfOldPasswordUsedUserMessageIfOldPasswordUsed いいえNo 古いパスワードが使用されている場合にユーザーに表示するメッセージ。The message to display to the user if an old password used.

暗号化キーCryptographic keys

CryptographicKeys 要素には次の属性が存在します。The CryptographicKeys element contains the following attribute:

属性Attribute RequiredRequired 説明Description
client_secretclient_secret はいYes ID プロバイダー アプリケーションのクライアント シークレット。The client secret of the identity provider application. response_types メタデータが code に設定されている場合にのみ、暗号化キーが必要です。The cryptographic key is required only if the response_types metadata is set to code. この場合、Azure AD B2C は、アクセス トークンの認証コードを交換するために、別の呼び出しを行います。In this case, Azure AD B2C makes another call to exchange the authorization code for an access token. メタデータが id_token に設定されている場合は、暗号化キーを省略できます。If the metadata is set to id_token you can omit the cryptographic key.

リダイレクト URIRedirect Uri

ID プロバイダーのリダイレクト URI を構成する場合は、https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp を入力します。When you configure the redirect URI of your identity provider, enter https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp. {your-tenant-name} をテナントの名前に置き換えます。Make sure to replace {your-tenant-name} with your tenant's name. リダイレクト URI は、すべて小文字である必要があります。The redirect URI needs to be in all lowercase.

例 :Examples: