Azure Active Directory B2C カスタム ポリシーで OpenID Connect 技術プロファイルを定義する

注意

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

Azure Active Directory B2C (Azure AD B2C) では、OpenID Connect プロトコルの ID プロバイダーのサポートを提供しています。 OpenID Connect 1.0 は OAuth 2.0 の上に ID レイヤーを定義し、現在の認証プロトコルにおいて最先端のものとなっています。 OpenID Connect 技術プロファイルを使用して、OpenID Connect ベースの ID プロバイダー (Microsoft Entra ID など) とフェデレーションできます。 ID プロバイダーとのフェデレーションにより、ユーザーは、既存のソーシャル ID またはエンタープライズ ID でサインインできます。

Protocol

Protocol 要素の Name 属性は OpenIdConnect に設定する必要があります。 たとえば、MSA-OIDC 技術プロファイル用のプロトコルは OpenIdConnect です。

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

入力クレーム

InputClaimsInputClaimsTransformations の要素は不要です。 ただし、追加のパラメーターを ID プロバイダーに送信する場合があります。 次の例では、値が contoso.com である domain_hint クエリ文字列パラメーターを認可要求に追加しています。

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

出力クレーム

OutputClaims 要素には、OpenID Connect ID プロバイダーにより返される要求の一覧が存在します。 お使いのポリシーに定義されている要求の名前を、ID プロバイダーで定義されている名前にマップする必要があるかもしれません。 DefaultValue 属性を設定している限り、ID プロバイダーにより返されない要求を追加することもできます。

OutputClaimsTransformations 要素には、出力要求を修正したり新しい要求を生成するために使用される、OutputClaimsTransformation 要素のコレクションが含まれている場合があります。

次の例は、Microsoft アカウント プロバイダーにより返される要求を示しています。

  • issuerUserId 要求にマップされている sub 要求。
  • displayName 要求にマップされている name 要求。
  • どの名前にもマップされていない email

また、技術プロファイルは、ID プロバイダーにより返されない要求も返します。

  • ID プロバイダーの名前を保持する identityProvider 要求。
  • 既定値の socialIdpAuthentication である authenticationSource 要求。
<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>

メタデータ

属性 必須 説明
client_id はい ID プロバイダーのアプリケーション識別子。
IdTokenAudience いいえ id_token の対象ユーザー。 指定される場合、Azure AD B2C により、ID プロバイダーによって返されたトークンの aud クレームが IdTokenAudience メタデータで指定されているものと等しいかどうかを確認します。
METADATA はい OpenID の既知の構成エンドポイントとも呼ばれる OpenID Connect ID プロバイダー構成ドキュメントを指す URL。 URL には、テナント名に置き換えられる {tenant} 式を含めることができます。
authorization_endpoint いいえ OpenID Connect ID プロバイダー構成の承認エンドポイントを指す URL。 authorization_endpoint メタデータの値は、OpenID の既知の構成エンドポイントで指定された authorization_endpoint よりも優先されます。 URL には、テナント名に置き換えられる {tenant} 式を含めることができます。
end_session_endpoint いいえ セッションの終了エンドポイントの URL。 end_session_endpoint メタデータの値は、OpenID の既知の構成エンドポイントで指定された end_session_endpoint よりも優先されます。
発行者 いいえ OpenID Connect ID プロバイダーの一意識別子。 issuer メタデータの値は、OpenID の既知の構成エンドポイントで指定された issuer よりも優先されます。 指定される場合、Azure AD B2C により、ID プロバイダーによって返されたトークンの iss クレームが issuer メタデータで指定されているものと等しいかどうかを確認します。
ProviderName いいえ ID プロバイダーの名前。
response_types いいえ OpenID Connect Core 1.0 仕様に準拠した応答の種類。 指定できる値: id_tokencode、または token
response_mode いいえ Azure AD B2C に結果を返信するために、ID プロバイダーが使用するメソッド。 指定できる値: queryform_post (既定)、または fragment
scope いいえ OpenID Connect Core 1.0 の仕様に従って定義される、要求の範囲。 たとえば、openidprofileemail などです。
HttpBinding いいえ アクセス トークンと要求トークンのエンドポイントに予期される HTTP バインド。 指定できる値: GET または POST
ValidTokenIssuerPrefixes いいえ Microsoft Entra ID などのマルチテナント ID プロバイダーを使用するときに、各テナントにサインインするために使用できるキー。
UsePolicyInRedirectUri いいえ リダイレクト URI を構築するときにポリシーを使用するかどうかを示します。 ID プロバイダーでアプリケーションを構成するときは、リダイレクト URI を指定する必要があります。 リダイレクト URI は Azure AD B2C を指します (https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp)。 true を指定した場合は、使用するポリシーごとにリダイレクト URI を追加する必要があります。 (例: https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/{policy-name}/oauth2/authresp)。
MarkAsFailureOnStatusCode5xx いいえ Http 状態コードが 5xx の範囲にある場合、外部サービスへの要求を失敗としてマークする必要があるかどうかを示します。 既定では、 falseです。
DiscoverMetadataByTokenIssuer いいえ JWT トークンで発行者を使用して OIDC メタデータを検出する必要があるかどうかを示します。発行者に基づいてメタデータ エンドポイント URL をビルドする必要がある場合は、これを true に設定します。
IncludeClaimResolvingInClaimsHandling いいえ 入力と出力の要求について、要求の解決を技術プロファイルに含めるかどうかを指定します。 指定できる値: true または false (既定値)。 技術プロファイルで要求リゾルバーを使用する場合は、これを true に設定します。
token_endpoint_auth_method いいえ Azure AD B2C からトークン エンドポイントに認証ヘッダーを送信する方法を指定します。 指定できる値: client_secret_post (既定値)、および client_secret_basicprivate_key_jwt。 詳細については、OpenID Connect クライアント認証に関するセクションをご覧ください。
token_signing_algorithm いいえ token_endpoint_auth_methodprivate_key_jwt に設定されている場合に使用する署名アルゴリズムを指定します。 指定できる値: RS256 (既定値) または RS512
SingleLogoutEnabled いいえ サインイン中に技術プロファイルがフェデレーション ID プロバイダーからサインアウトを試行しているかどうかを示します。 詳しくは、Azure AD B2C のセッション サインアウトに関する記事をご覧ください。指定できる値は true(既定値) またはfalseです。
ReadBodyClaimsOnIdpRedirect いいえ ID プロバイダー リダイレクトで応答本文から要求を読み取るには、true に設定します。 このメタデータは Apple ID と共に使用されます。要求は応答ペイロードで返されます。
<Metadata>
  <Item Key="ProviderName">https://login.live.com</Item>
  <Item Key="METADATA">https://login.live.com/.well-known/openid-configuration</Item>
  <Item Key="response_types">code</Item>
  <Item Key="response_mode">form_post</Item>
  <Item Key="scope">openid profile email</Item>
  <Item Key="HttpBinding">POST</Item>
  <Item Key="UsePolicyInRedirectUri">false</Item>
  <Item Key="client_id">Your Microsoft application client ID</Item>
</Metadata>

UI 要素

次の設定を使用して、失敗したときに表示されるエラー メッセージを構成できます。 メタデータは、OpenID Connect 技術プロファイルで構成する必要があります。 エラー メッセージは、ローカライズできます。

属性 必須 説明
UserMessageIfClaimsPrincipalDoesNotExist No 指定されたユーザー名のアカウントがディレクトリに見つからなかった場合に、ユーザーに表示するメッセージ。
UserMessageIfInvalidPassword No パスワードが正しくない場合にユーザーに表示するメッセージ。
UserMessageIfOldPasswordUsed No 古いパスワードが使用されている場合にユーザーに表示するメッセージ。

暗号化キー

CryptographicKeys 要素には次の属性が存在します。

属性 必須 説明
client_secret はい ID プロバイダー アプリケーションのクライアント シークレット。 この暗号化キーが必要になるのは、response_types メタデータが code に設定されていて、かつ token_endpoint_auth_methodclient_secret_post または client_secret_basic に設定されている場合のみです。 この場合、Azure AD B2C は、アクセス トークンの認証コードを交換するために、別の呼び出しを行います。 メタデータが id_token に設定されている場合は、暗号化キーを省略できます。
assertion_signing_key はい クライアント アサーションに署名するために使用される RSA 秘密キー。 この暗号化キーが必要になるのは、token_endpoint_auth_method メタデータが private_key_jwt に設定されている場合のみです。

リダイレクト URI

ID プロバイダーのリダイレクト URI を構成する場合は、https://{your-tenant-name}.b2clogin.com/{your-tenant-name}.onmicrosoft.com/oauth2/authresp を入力します。 {your-tenant-name} をテナントの名前に置き換えます。 リダイレクト URI は、すべて小文字である必要があります。

例 :