次の方法で共有


Azure Active Directory B2C のカスタム ポリシーを使用して AD FS を OpenID Connect ID プロバイダーとして追加する

重要

2025 年 5 月 1 日より、Azure AD B2C は新規のお客様向けに購入できなくなります。 詳細については、FAQ を参照してください

開始する前にこのページの上部にある ポリシーの種類 セレクターを使用して、設定するポリシーの種類を選択します。 Azure Active Directory B2C には、ユーザーがアプリケーションを操作する方法を定義する 2 つの方法 (定義済みのユーザー フローを使用する、または完全に構成可能なカスタム ポリシーを使用する) があります。 この記事で必要な手順は、方法ごとに異なります。

[前提条件]

AD FS アプリケーションを作成する

Azure Active Directory B2C (Azure AD B2C) で AD FS アカウントを持つユーザーのサインインを有効にするには、AD FS にアプリケーション グループを作成します。 詳細については、「OpenID Connect と AD FS 2016 以降を使用した Web アプリケーションの構築」を参照してください。

アプリケーション グループを作成するには、次の手順に従います。

  1. サーバー マネージャーで、[ツール] を選択し、[AD FS 管理] を選択します。
  2. [AD FS の管理] で、 [アプリケーション グループ] を右クリックし、 [アプリケーション グループの追加] を選択します。
  3. アプリケーション グループ ウィザードの [ようこそ ] 画面で、次の操作を行います。
    1. アプリケーションの 名前 を入力します。 たとえば、 Azure AD B2C アプリケーションです。
    2. [Client-Server アプリケーション] で、Web アプリケーション テンプレートにアクセスする Web ブラウザーを選択します。
    3. [次へ] を選択します。
  4. アプリケーション グループ ウィザードの [ネイティブ アプリケーション] 画面で、次の操作を行います。
    1. [クライアント識別子] の値をコピーします。 クライアント識別子は、AD FS アプリケーション ID です。 この記事の後半でアプリケーション ID が必要になります。
    2. [ リダイレクト URI] に「 https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/oauth2/authresp」と入力し、[ 追加] を入力しますカスタム ドメインを使用する場合は、「https://your-domain-name/your-tenant-name.onmicrosoft.com/oauth2/authresp」と入力します。 your-tenant-nameをテナントの名前に置き換え、your-domain-nameをカスタム ドメインに置き換えます。
    3. [ 次へ]、[ 次へ] の順に選択し、もう一度 [次へ ] を選択してアプリ登録ウィザードを完了します。
    4. を選択してを閉じます。

アプリ要求を構成する

この手順では、AD FS アプリケーションが Azure AD B2C に返す要求を構成します。

  1. アプリケーション グループで、作成したアプリケーションを選択します。

  2. アプリケーションのプロパティ ウィンドウの [ アプリケーション] で、 Web アプリケーションを選択します。 次に、[ 編集] を選択します。 Web アプリケーションを編集する方法を示すスクリーンショット。

  3. [ 発行変換規則 ] タブを選択します。次に、[ ルールの追加] を選択します。

  4. 要求規則テンプレートで、[LDAP 属性を要求として送信] を選択し、[次へ] を選択します。

  5. 要求規則名を指定します属性ストアの場合は、[Active Directory] を選択し、次の要求を追加します。

    LDAP 属性 出力方向の要求の種類
    ユーザー -Principal-Name UPN
    名字 苗字
    Given-Name given_name
    Display-Name 名前

    一部の名前は、送信要求の種類のドロップダウンに表示されないことに注意してください。 手動で入力する必要があります (ドロップダウンは編集可能です)。

  6. 完了 を選択します。

  7. [ 適用] を選択し、[ OK] を選択します

  8. もう一度 [OK] を 選択して完了します。

AD FS を ID プロバイダーとして構成する

  1. 少なくとも外部 ID プロバイダー管理者特権を持つアカウントで Azure portal にサインインします。

  2. 複数のテナントにアクセスできる場合、上部のメニューの [設定] アイコンを選択し、[ディレクトリとサブスクリプション] メニューからお使いの Azure AD B2C テナントに切り替えます。

  3. Azure portal の左上隅にある [すべてのサービス] を選択してから、[Azure AD B2C] を検索して選択します。

  4. [ID プロバイダー] を選択し、[新しい OpenID Connect プロバイダー] を選択します。

  5. 名前を入力します。 たとえば、 Contoso などです。

  6. [メタデータ URL] に、AD FS OpenID Connect 構成ドキュメントの URL を入力します。 例えば次が挙げられます。

    https://adfs.contoso.com/adfs/.well-known/openid-configuration 
    
  7. クライアント IDには、前に記録したアプリケーション ID を入力します。

  8. [スコープ] に、openidを入力します。

  9. [ 応答の種類] で、[id_token] を選択 します。 そのため、 クライアント シークレット の値は必要ありません。 汎用 OpenID Connect ID プロバイダーを追加するときに クライアント ID とシークレット を使用する方法について説明します。

  10. (省略可能) ドメイン ヒントに「 contoso.com」と入力します。 詳しくは、「Azure Active Directory B2C を使用した直接サインインの設定」をご覧ください。

  11. [ ID プロバイダー要求マッピング] で、次の要求を選択します。

    • ユーザー ID: upn
    • 表示名: unique_name
    • 指定された名前: given_name
    • : family_name
  12. 保存 を選択します。

AD FS ID プロバイダーをユーザー フローに追加する

この時点で、AD FS (Contoso) ID プロバイダーは設定されていますが、どのサインイン ページでもまだ使用できません。 AD FS ID プロバイダーをユーザー フローに追加するには:

  1. Azure AD B2C テナントで、[ ユーザー フロー] を選択します。
  2. AD FS ID プロバイダー (Contoso) を追加するユーザー フローを選択します。
  3. [ソーシャル ID プロバイダー] で、[Contoso] を選択します
  4. 保存 を選択します。
  5. ポリシーをテストするには、[ ユーザー フローの実行] を選択します。
  6. [アプリケーション] で、以前に登録した testapp1 という名前の Web アプリケーションを選択します。 応答 URLhttps://jwt.msが表示されます。
  7. [ ユーザー フローの実行 ] ボタンを選択します。
  8. サインアップまたはサインイン ページで、Contoso を選択して Contoso アカウントでサインインします。

サインイン プロセスが成功すると、ブラウザーは https://jwt.ms にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。

AD FS を ID プロバイダーとして構成する

ユーザーが AD FS アカウントを使用してサインインできるようにするには、Azure AD B2C がエンドポイントを介して通信できるクレーム プロバイダーとして AD FS を定義する必要があります。

  1. TrustFrameworkExtensions.xmlを開きます。

  2. ClaimsProviders 要素を検索します。 存在しない場合は、ルート要素の下に追加します。

  3. 次のように新しい ClaimsProvider を追加します。

    <ClaimsProvider>
      <Domain>contoso.com</Domain>
      <DisplayName>Contoso</DisplayName>
      <TechnicalProfiles>
        <TechnicalProfile Id="Contoso-OpenIdConnect">
          <DisplayName>Contoso</DisplayName>
          <Protocol Name="OpenIdConnect" />
          <Metadata>
            <Item Key="METADATA">https://your-adfs-domain/adfs/.well-known/openid-configuration</Item>
            <Item Key="response_types">id_token</Item>
            <Item Key="response_mode">form_post</Item>
            <Item Key="scope">openid</Item>
            <Item Key="HttpBinding">POST</Item>
            <Item Key="UsePolicyInRedirectUri">0</Item>
            <!-- Update the Client ID below to the Application ID -->
            <Item Key="client_id">Your AD FS application ID</Item>
          </Metadata>
          <OutputClaims>
            <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="upn" />
            <OutputClaim ClaimTypeReferenceId="givenName" PartnerClaimType="given_name" />
            <OutputClaim ClaimTypeReferenceId="surname" PartnerClaimType="family_name" />
            <OutputClaim ClaimTypeReferenceId="displayName" PartnerClaimType="unique_name" />
            <OutputClaim ClaimTypeReferenceId="identityProvider" PartnerClaimType="iss"  />
            <OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="socialIdpAuthentication" AlwaysUseDefaultValue="true" />
          </OutputClaims>
          <OutputClaimsTransformations>
            <OutputClaimsTransformation ReferenceId="CreateRandomUPNUserName" />
            <OutputClaimsTransformation ReferenceId="CreateUserPrincipalName" />
            <OutputClaimsTransformation ReferenceId="CreateAlternativeSecurityId" />
          </OutputClaimsTransformations>
          <UseTechnicalProfileForSessionManagement ReferenceId="SM-SocialLogin" />
        </TechnicalProfile>
      </TechnicalProfiles>
    </ClaimsProvider>
    
  4. メタデータ URL には、AD FS OpenID Connect 構成ドキュメントの URL を入力します。 例えば次が挙げられます。

    https://adfs.contoso.com/adfs/.well-known/openid-configuration 
    
  5. client_idアプリケーション登録のアプリケーション ID に設定します。

  6. ファイルを保存します。

ユーザー体験を追加する

この時点で、ID プロバイダーは設定されていますが、どのサインイン ページでもまだ使用できません。 独自のカスタム ユーザー体験がない場合は、既存のテンプレート ユーザー体験の複製を作成します。それ以外の場合は、次の手順に進みます。

  1. スターター パックから TrustFrameworkBase.xml ファイルを開きます。
  2. を含む Id="SignUpOrSignIn" 要素の内容全体を検索してコピーします。
  3. TrustFrameworkExtensions.xml を開き、UserJourneys 要素を見つけます。 要素が存在しない場合は、要素を追加します。
  4. UserJourneys 要素の子としてコピーした UserJourney 要素の内容全体を貼り付けます。
  5. ユーザージャーニーの ID を変更します。 たとえば、Id="CustomSignUpSignIn" のようにします。

ID プロバイダーをユーザー体験に追加する

これでユーザー体験が作成されたので、新しい ID プロバイダーをユーザー体験に追加します。 最初にサインイン ボタンを追加し、そのボタンをアクションにリンクします。 あなたが以前に作成した技術プロファイルがこのアクションです。

  1. ユーザー体験に Type="CombinedSignInAndSignUp"または Type="ClaimsProviderSelection" を含むオーケストレーション ステップ要素を見つけます。 通常は、オーケストレーションの最初の手順です。 ClaimsProviderSelections 要素には、ユーザーがサインインできる ID プロバイダーの一覧が含まれています。 要素の順序は、ユーザーに表示されるサインイン ボタンの順序を制御します。 ClaimsProviderSelection XML 要素を追加します。 TargetClaimsExchangeId の値をフレンドリ名に設定します。

  2. 次のオーケストレーション手順で、 ClaimsExchange 要素を追加します。 Id をターゲット要求交換 ID の値に設定します。TechnicalProfileReferenceId の値を、先ほど作成した技術プロファイルの ID に更新します。

次の XML は、ID プロバイダーを使用したユーザー体験の最初の 2 つのオーケストレーション手順を示しています。

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <ClaimsProviderSelections>
    ...
    <ClaimsProviderSelection TargetClaimsExchangeId="ContosoExchange" />
  </ClaimsProviderSelections>
  ...
</OrchestrationStep>

<OrchestrationStep Order="2" Type="ClaimsExchange">
  ...
  <ClaimsExchanges>
    <ClaimsExchange Id="ContosoExchange" TechnicalProfileReferenceId="Contoso-OpenIdConnect" />
  </ClaimsExchanges>
</OrchestrationStep>

依存当事者ポリシーを構成する

証明書利用者ポリシー ( SignUpSignIn.xmlなど) は、Azure AD B2C が実行するユーザー体験を指定します。 依存するパーティー内で DefaultUserJourney 要素を検索します。 追加した ID プロバイダーのユーザージャーニー ID と一致するように ReferenceId を更新します。

次の例では、 CustomSignUpSignIn ユーザー体験の ReferenceIdCustomSignUpSignInに設定されています。

<RelyingParty>
  <DefaultUserJourney ReferenceId="CustomSignUpSignIn" />
  ...
</RelyingParty>

カスタム ポリシーをアップロードする

  1. Azure portal にサインインします。
  2. ポータル のツール バーで [ディレクトリ + サブスクリプション ] アイコンを選択し、Azure AD B2C テナントが含まれているディレクトリを選択します。
  3. Azure portal で、 [Azure AD B2C] を検索して選択します。
  4. [ ポリシー] で、[ Identity Experience Framework] を選択します。
  5. [ カスタム ポリシーのアップロード] を選択し、変更した 2 つのポリシー ファイルを次の順序でアップロードします。拡張機能ポリシー ( TrustFrameworkExtensions.xmlなど)、証明書利用者ポリシー ( SignUpSignIn.xmlなど)。

カスタム ポリシーをテストする

  1. 依存するパーティポリシーを選択します (例: B2C_1A_signup_signin)。
  2. [ アプリケーション] で、 以前に登録した Web アプリケーションを選択します。 応答 URLhttps://jwt.msが表示されます。
  3. [ 今すぐ実行 ] ボタンを選択します。
  4. サインアップまたはサインイン ページで、Contoso を選択して Contoso アカウントでサインインします。

サインイン プロセスが成功すると、ブラウザーは https://jwt.ms にリダイレクトされ、Azure AD B2C によって返されるトークンの内容が表示されます。

次のステップ

AD-FS トークンをアプリケーションに渡す方法について説明します。