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.


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. 次の例では、値が である domain_hint クエリ文字列パラメーターを認可要求に追加しています。The following example adds the domain_hint query string parameter with the value of to the authorization request.

  <InputClaim ClaimTypeReferenceId="domain_hint" DefaultValue="" />

出力要求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.
  <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="" />
  <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" />
  <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" />
  <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="name" />
  <OutputClaim ClaimTypeReferenceId="email" />


AttributeAttribute 必須Required 説明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 プロバイダーにより返された要求内にあり、そして指定されたものと等しいかどうかをチェックします。If specified, Azure AD B2C checks whether the token is in a claim returned by the identity provider and is equal to the one specified.
METADATAMETADATA はいYes OpenID Connect Discovery 仕様に従ってフォーマットされた JSON 構成ドキュメントをポイントする URL。既知の openid 構成エンドポイントとも呼ばれます。A URL that points to a JSON configuration document formatted according to the OpenID Connect Discovery specification, which is also known as a well-known openid configuration endpoint.
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}{your-tenant-name}。The redirect URI points to Azure AD B2C, https://{your-tenant-name}{your-tenant-name} false を指定した場合は、使用するポリシーごとにリダイレクト URI を追加する必要があります。If you specify false, you need to add a redirect URI for each policy you use. (例: https://{your-tenant-name}{your-tenant-name}{policy-name}/oauth2/authresp)。For example: https://{your-tenant-name}{your-tenant-name}{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.

暗号化キーCryptographic keys

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

AttributeAttribute 必須Required 説明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}{your-tenant-name} を入力します。When you configure the redirect URI of your identity provider, enter https://{your-tenant-name}{your-tenant-name} {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.