フェデレーション ID 資格情報を使用してユーザー認証を追加する

Azure AI Bot Service は、ユーザー認証を必要とするオンラインリソースにアクセスできるエージェントの開発を支援します。 Azure が代わりに処理するため、エージェントは認証トークンを管理する必要はありません。 Azure では、OAuth 2.0 を使用して、各ユーザーの資格情報に基づいてトークンを生成します。 エージェントは、Azure が生成したトークンを使用してそれらのリソースにアクセスします。 この方法により、ユーザーは保護されたリソースにアクセスするためにエージェントに ID とパスワードを提供する必要がなく、信頼できる ID プロバイダーにのみ提供することになります。

Important

Web チャットと Direct Line の検討事項: Web チャット コントロールを使用してエージェントに接続する際のセキュリティリスクを軽減するには、強化された認証を有効にした Direct Line を使用する必要があります。 詳細については、「Direct Line 拡張認証」を参照してください。

エージェントで OAuth をセットアップするには、Azure ボットを登録します (まだ登録していない場合)。

Important

Azure でエージェントを登録するたびに、エージェントには Microsoft Entra ID アプリケーションが割り当てられます。 ただし、このアプリケーションは、チャネルからボットへのアクセスをセキュリティで保護します。 ユーザーに代わってエージェントがアクセスする外部保護リソースごとに、追加の Microsoft Entra ID アプリケーションが必要となります。

Microsoft Entra ID ID サービス

Microsoft Entra ID は、OAuth 2.0 などの業界標準プロトコルを使用して、ユーザーを安全にサインインさせるアプリケーションをビルドすることができるクラウド ID サービスです。

次の 3 つの ID サービスのいずれかを使用できます:

  1. Microsoft Identity Platform (v2.0): Azure Active Directory v2 エンドポイントとも呼ばれる、Azure AD プラットフォーム (v1.0) の進化形です。
  2. フェデレーション資格情報: フェデレーション資格情報を使用した AAD v2 とも呼ばれます。
  3. 証明書: 証明書付き AAD v2 とも呼ばれます。

これらの機能により、すべての Microsoft ID プロバイダーにサインインし、Microsoft Graph などの Microsoft API や開発者が構築したその他の API を呼び出すトークンを取得するアプリケーションを構築できます。

Microsoft Entra ID ID プロバイダーを作成する

このセクションでは、OAuth 2.0 を使用して Graph エージェントを認証する Microsoft Entra ID アイデンティティ プロバイダーの作成方法を説明します。

ヒント

アプリケーションによって要求されたアクセス許可の委任に同意できるテナントで、Microsoft Entra ID アプリケーションを作成して登録する必要があります。

  1. Azure portal で Microsoft Entra ID パネルを開きます。 正しいテナントにいない場合は、[ディレクトリの切り替え] を選択して正しいテナントに切り替えます。 (テナントの作成方法については、「ポータルにアクセスしてテナントを作成する」を参照してください。)

  2. [アプリの登録] パネルを開きます。

  3. アプリの登録の設定

    1. Teams SSO の場合は、エージェント/Azure ボットの既存のアプリ登録を開きます。

      1. Web プラットフォームが表示されない場合は、認証 ウィンドウで、+ プラットフォームの追加を選択します。
        1. Web を選択します

        2. 次の手順で、テーブルから URI のリダイレクトを入力します。

        3. 構成をクリックします

          リダイレクト URI を追加します

    2. 他のチャネルまたは OAuth の場合

      1. [アプリの登録] パネルで、[新規登録] を選択します。

      2. 必須のフィールドに入力してアプリ登録を作成します。

        1. アプリケーションに名前を付けます。

        2. ご自分のアプリケーションについて、[サポートされているアカウントの種類] を選択します。 シングル テナントを選択します。

        3. リダイレクト URIWeb を選択し、サポートされている OAuth リダイレクト URL のいずれかに URL を設定します。

          データの保存場所 OAuth URL OAuth リダイレクト URL
          なし パブリック https://token.botframework.com https://token.botframework.com/.auth/web/redirect
          ヨーロッパ パブリック https://europe.token.botframework.com https://europe.token.botframework.com/.auth/web/redirect
          米国 パブリック https://unitedstates.token.botframework.com https://unitedstates.token.botframework.com/.auth/web/redirect
          インド パブリック https://india.token.botframework.com https://india.token.botframework.com/.auth/web/redirect
          なし Azure Government https://token.botframework.azure.us https://token.botframework.azure.us/.auth/web/redirect
          なし 21Vianet が運営するAzure https://token.botframework.azure.cn https://token.botframework.azure.cn/.auth/web/redirect
        4. 登録 を選択します。

          1. 作成されると、Azureはアプリの [概要] ページを表示します。
          2. [アプリケーション (クライアント) ID] の値を記録します。 この値は後ほど、接続文字列を作成し、エージェント登録で Microsoft Entra ID プロバイダーを登録する際にクライアント ID として使用します。
          3. [ディレクトリ (テナント) ID] の値を記録します。 この値を使用して、このプロバイダー アプリケーションをボットに登録します。
  4. ナビゲーション ウィンドウで、 証明書 & シークレット を選択して、アプリケーションの資格情報を追加します。

    1. フェデレーション資格情報」で、「資格情報の追加」を選択します。

      Entra FIC 資格情報

    2. 資格情報の追加ページで、他の発行者へのフェデレーション資格情報のシナリオを選択します

      Entra FIC その他のシナリオ

    3. 必須フィールドに値を入力し、設定の確認と更新を行います

      1. [アカウントを接続する] で情報を入力します。

        Entra FIC Connect

      2. 発行者 : https://login.microsoftonline.com/{customer-tenant-ID}/v2.0

      3. サブジェクト識別子 : /eid1/c/pub/t/{base64 encoded customer tenant ID}/a/{base64 encoded 1-P app client ID}/{unique-identifier-for-projected-identity}

        以下の表には、サポートされているファーストパーティ アプリケーション ID の Base64url でエンコードされたバイト配列表現が含まれています。 ファースト パーティ アプリを表すこの値を使用します。

        エンコードされた値 Description
        9ExAW52n_ky4ZiS_jhpJIQ Bot Service トークン ストアの Base64url エンコード
        ND1y8_Vv60yhSNmdzSUR_A Bot Framework Dev Portal の Base64url エンコード

        以下の表には、サポートされているテナント ID の一部を Base64url でエンコードしたバイト配列表現が含まれています。 アプリのテナントを表す値を使用します。

        エンコードされた値 Description
        v4j5cvGGr0GRqy180BHbRw Base64url でエンコードされた MSIT テナント ID (aaaabbbb-0000-cccc-1111-dddd2222eeee)
        PwFflyR_6Een06vEdSvzRg Base64url でエンコードされた PME テナント ID (bbbbcccc-1111-dddd-2222-eeee3333ffff)
        6q7FzcUVtk2wefyt0lBdwg Base64url でエンコードされた Torus テナント ID (ccccdddd-2222-eeee-3333-ffff4444aaaa)
        IRngM2RNjE-gVVva_9XjPQ Base64url でエンコードされた AME テナント ID (ddddeeee-3333-ffff-4444-aaaa5555bbbb)

        プライマリ ID サービス所有者は、これを一度計算し、その計算結果を消費者へ提供します。

      4. Unique-identifier-for-projected-identity: Azure Bot の OAuth 接続設定で使用される、選択した一意の識別子。

      5. 名前: 選択した名前。 エージェント(agent)OAuth

      6. 対象ユーザー: api://AzureADTokenExchange (クラウド固有の値を使用)

    4. 資格情報の詳細に情報を提供してください。

      Entra FIC 資格情報の詳細

    5. を選択して、を追加し、資格情報を登録します。

  5. API エンドポイントを公開する

    1. 左側のレールで API の公開をクリックします

      • Azure Bot Service ボットの場合: 既定の api://{appid} が適しています。
      • Teams ボットの場合: この形式は必須です api://botid-{appid}
    2. スコープを追加する

      1. この API で定義されているスコープ セクションで 、+ スコープの追加を選択します。

        スコープを追加する

      2. スコープを構成するための詳細を入力します。

        スコープの詳細

      3. スコープ名の入力defaultScopes

      4. このスコープに同意できるユーザーを選択します。 既定のオプションは管理者のみです。

      5. 管理の同意の表示名を入力します。

      6. 管理者の同意の説明を入力します。

      7. ユーザーの同意の表示名を入力します。

      8. ユーザーの同意の説明を入力します。

      9. 状態の有効化オプションを選択します。

      10. スコープの追加を選択します。

    3. Teams の場合のみ、承認されたクライアント アプリケーションを構成します

      1. クライアント アプリケーションの追加 + を選択します。

        クライアントの追加

      2. アプリが認証する Web アプリケーションに対して、適切な Microsoft 365 クライアントの ID を入力します。

        clientId を追加する

      3. 次の クライアント ID のいずれかの方法を選択します:

        使用するクライアント ID 承認するアプリの種類
        1fec8e78-bce4-4aaf-ab1b-5451cc387264 Teams モバイルまたはデスクトップ アプリケーション
        5e3ce6c0-2b1f-4285-8d4b-75ee78787346 Teams Web アプリケーション
        4765445b-32c6-49b0-83e6-1d93765276ca Microsoft 365 Web アプリケーション
        0ec893e0-5785-4de6-99da-4ed124e5296c Microsoft 365 デスクトップ アプリケーション
        d3590ed6-52b3-4102-aeff-aad2292ab01c Microsoft 365 モバイル アプリケーション/Outlook デスクトップ アプリケーション
        bc59ab01-8403-45c6-8796-ac3ef710b3e3 Outlook Web アプリケ―ション
        27922004-5251-4030-b22d-91ecd9a37ea4 Outlook モバイル アプリケーション
      4. アプリ用に作成したアプリケーション ID URI を「承認済みスコープ」で選択し、公開した Web API にそのスコープを追加します。

      5. アプリケーションの追加を選択します。

        追加されたクライアント アプリ

  6. ナビゲーション ウィンドウで、[API のアクセス許可] を選択し、[API のアクセス許可] パネルを開きます。 アプリの API アクセス許可を明示的に設定するのが成功事例です。

    1. [アクセス許可の追加] を選択し、[API アクセス許可の要求] ウィンドウを表示します。

    2. このサンプルでは、[Microsoft API][Microsoft Graph] を選択します。

    3. [委任されたアクセス許可] を選択し、必要とするアクセス許可が選択されていることを確認します。 このサンプルには、これらのアクセス許可が必要です。

      注: 管理者の同意が必要 とマークされているアクセス許可には、ユーザーとテナント管理者の両方がログインする必要があるため、エージェントは個々にアクセスしない傾向があります。

      • ユーザー.リード
    4. アクセス許可の追加を選択します。 (ユーザーがエージェントを介してこのアプリに初めてアクセスする場合は、同意を付与する必要があります)。

  7. 以上で OAuth アプリケーションが構成されました。

    Note

    接続文字列を作成し、エージェント登録で ID プロバイダーを登録する際に、アプリケーション (クライアント) ID を割り当てます。 次のセクションをご覧ください。

Azure ボットで OAuth 接続を作成する

次の手順では、ID プロバイダーをエージェントに登録します。

Note

シングル テナントの Entra アプリケーションは、フェデレーション認証サービスプロバイダーを備えた AAD v2 でのみサポートされます。 マルチテナント アプリのサポートは、今後追加される予定です。

  1. Azure Portal でボットの Azure Bot リソース ページを開きます。

  2. [設定][構成] の順に選択します。

  3. ページの下部付近にある OAuth 接続設定 ボタンを選択します。

  4. 次のようにフォームに入力します。

    1. 名前。 接続の名前を入力します。 エージェント コードで使用します。

    2. サービス プロバイダー[フェデレーション資格情報付き AAD v2] を選択して、サービスプロバイダー固有のフィールドを表示します。

    3. クライアント ID。Microsoft Entra ID ID プロバイダー用に記録したアプリケーション (クライアント) ID (単一テナントのみサポート) を入力します。

    4. 一意識別子 フェデレーション資格情報の作成時に Microsoft Entra ID ID プロバイダー用に記録した一意の識別子を入力します。

    5. トークン交換 URL。 Teams SSO の場合は、前に作成した API エンドポイント (api://botid-{appId}) を入力します。 それ以外の場合は空白のままにします。

    6. テナント ID。 Microsoft Entra ID アプリ用に事前に記録したディレクトリ (テナント) ID、または Azure DD アプリ作成時に選択したサポートされるアカウントの種類に応じて common を入力します。 割り当てる値を決定するには、次の条件に従います。

      • Microsoft Entra ID アプリの作成時に、[(この組織ディレクトリ内のアカウントのみ (Microsoft のみ - シングル テナント))] を選択した場合、Microsoft Entra ID アプリ用に前に記録したテナント ID を入力します。
      • ただし、[任意の組織ディレクトリ内のアカウント (任意の Microsoft Entra ID ディレクトリ - マルチテナント) と個人用 Microsoft アカウント (Xbox、Outlook.com など)] または [任意の組織ディレクトリ内のアカウント (Microsoft Entra ID ディレクトリ - マルチテナント)] を選択した場合は、テナント ID の代わりに「common」と入力します。 それ以外の場合、Microsoft Entra ID アプリは、ID が選択されたテナントを通じて検証し、個人の Microsoft アカウントを除外します。

      これは、認証できるユーザーに関連付けられているテナントです。 詳細については、「Microsoft Entra ID のテナント」を参照してください。

    7. スコープには、アプリケーション登録から選択したアクセス許可の名前を入力します。 テスト目的の場合は、「User.Read」とのみ入力します。

      1. OBO に対して別のサービス (交換可能トークン) にこのトークンを使用する必要がある場合は、api://botid-{{appId}}/defaultScopes を使用します。

    注: Microsoft Entra ID では、Scopes フィールドは大文字小文字を区別する、スペース区切りの値のリストを受け付けます。

  5. 保存を選びます。

接続をテストする

  1. 接続エントリを選択して、作成した接続を開きます。
  2. [サービス プロバイダー接続設定] ウィンドウの上部にある [テスト接続] を選択します。
  3. 初回は新しいブラウザー タブが開き、アプリが要求しているアクセス許可の一覧が表示され、承認を求められます。
  4. [Accept](承認) を選択します。
  5. これにより、your-connection-name への接続テストが成功したページにリダイレクトされます。ここで your-connection-succeeded は、ユーザー独自の接続名を指します。
  6. 交換可能なトークンの場合のみ
    1. JWT トークンをコピーする
    2. https://jwt.io/ を使用してトークンをデコードする
    3. aud 要求の値は、api:// で始まる必要があります