次の方法で共有


エージェントで API プラグインの認証を構成する

Microsoft 365 Copilotで実行されているエージェントで API プラグインの認証を構成するには、サポートされている 4 つの認証スキームのいずれかを使用してバックエンド API にシームレスに接続します。

  • OAuth 2.0 認証コード フロー
  • シングル サインオン (SSO) 認証のMicrosoft Entra ID
  • API キー認証
  • 認証なし (匿名)

OAuth 2.0 認証コード フロー

プラグインは、オプションの Proof Key for Code Exchange (PKCE) サポートを使用して、OAuth 2.0 承認コード フローを介して取得されたベアラー トークンを使用して API にアクセスできます。

開始する前に、OAuth 2.0 プロバイダーに登録して、クライアント ID とシークレットを取得する必要があります。 OAuth プロバイダーで、アプリの登録中に許可されたリダイレクト URI を指定する必要がある場合は、必ず一覧に https://teams.microsoft.com/api/platform/v1.0/oAuthRedirect を含めます。

重要

OAuth 2.0 の API プラグインのサポートには、次の制限があります。

  • API プラグインは、OAuth 2.0 の承認コード フローのみをサポートします。
  • トークン エンドポイントから HTTP 状態コードを返す OAuth 2.0 サーバーはサポートされていません。

このスキームは、OpenAPI ドキュメントの securitySchemes プロパティで定義できます。 詳細については、「 OAuth 2.0」を参照してください。

securitySchemes:
  OAuth2:
    type: oauth2
    flows:
      authorizationCode:
        authorizationUrl: <authorization_url>
        tokenUrl: <token_url>
        refreshUrl: <refresh_url>
        scopes:
          scope: description

OAuth 2.0 認証を有効にするには、Teams 開発者ポータルで OAuth クライアントを登録する必要があります。 Visual Studio Code で、または Teams 開発者ポータルで手動で登録することで、OAuth クライアントを Teams Toolkit に登録できます。

Teams Toolkit に OAuth クライアントを登録する

Teams Toolkit は、 既存の OpenAPI ドキュメントから API プラグインを使用してエージェントを作成するときに、OAuth クライアントを登録し、アプリ パッケージを更新します。 OpenAPI ドキュメントで securitySchemes プロパティを定義する必要があります。

OAuth プロバイダーが PKCE をサポートしている場合は、エージェント をプロビジョニングする前に、エージェント プロジェクトのteamsapp.ymlで次のコード行のコメントを解除します。

# isPKCEEnabled: true

Teams 開発者ポータルで OAuth クライアントを登録する

  1. Teams 開発者ポータルを開きます。 [ ツール] ->[OAuth クライアントの登録] を選択します

  2. 既存の登録がない場合は、[クライアントの 登録] を選択します。 既存の登録がある場合は、[ 新しい OAuth クライアントの登録] を選択します。

  3. 次のフィールドに入力します。

    • 登録名: 登録のフレンドリ名。
    • ベース URL: API のベース URL。 この値は、OpenAPI ドキュメントの servers 配列 内のエントリに対応している必要があります。
    • クライアント ID: OAuth 2.0 プロバイダーによって発行されたクライアント ID またはアプリケーション ID。
    • クライアント シークレット: OAuth 2.0 プロバイダーによって発行されたクライアント シークレット。
    • 承認エンドポイント: アプリが承認コードを要求するために使用する OAuth 2.0 プロバイダーからの URL
    • トークン エンドポイント: OAuth 2.0 プロバイダーからの URL。アプリがアクセス トークンのコードを引き換えるために使用する URL
    • 更新エンドポイント: アプリがアクセス トークンの更新に使用する OAuth 2.0 プロバイダーからの URL
    • スコープ: アクセスを許可する API によって定義されたアクセス許可スコープ。
    • Code Exchange (PKCE) の Proof Key を有効にする: OAuth プロバイダーが PKCE をサポートしている場合は、この設定を有効にします。
  4. [保存] を選択します。

  5. 登録を完了すると、 OAuth クライアント登録 ID が生成されます。

クライアント登録 ID をプラグイン マニフェストに追加する

API プラグインに OAuth 2.0 認証を使用するには、ランタイム認証オブジェクトtype プロパティを OAuthPluginVault に設定し、reference_idを Teams 開発者ポータルのクライアント登録 ID に設定します。

"auth": {
  "type": "OAuthPluginVault",
  "reference_id": "auth registration ID"
},

MICROSOFT ENTRA ID SSO 認証

Microsoft Entra ID SSO 認証を使用すると、シームレスなシングル サインオン (SSO) 統合が可能になり、ユーザーは既存のMicrosoft Entra ID資格情報で認証できます。 この統合により、アクセス管理が簡素化され、追加の資格情報を必要とせずに API への安全な接続が確保されます。 API では、Microsoft Entra IDを使用してアクセスを制御する必要があります。

Teams 開発者ポータルで SSO クライアントを登録する

  1. Teams 開発者ポータルを開きます。 [ツール] ->Microsoft Entra SSO クライアント ID 登録を選択します。

  2. 既存の登録がない場合は、[ クライアント ID の登録] を選択します。 既存の登録がある場合は、[ 新しいクライアント登録] を選択します。

  3. 次のフィールドに入力します。

    • 登録名: 登録のフレンドリ名。
    • ベース URL: API のベース URL。 この値は、OpenAPI ドキュメントの servers 配列 内のエントリに対応している必要があります。
    • 組織別の使用を制限する: API エンドポイントにアクセスするためにアプリにアクセスできる Microsoft 365 organizationを選択します。
    • アプリ別の使用を制限する: 最終的なアプリ ID がわからない場合は、[ 任意の Teams アプリ ] を選択します。 アプリを発行したら、この登録を発行済みのアプリ ID にバインドします。
    • クライアント ID: Microsoft Entraに登録されているアプリのクライアント ID。
  4. [保存] を選択します。

  5. 登録を完了すると、Microsoft Entra SSO 登録 IDアプリケーション ID URI が生成されます。

Microsoft Entra アプリの登録を更新する

  1. Microsoft Entra 管理センターを開きます。 Teams 開発者ポータルによって生成されたアプリケーション ID URI を使用して API をセキュリティで保護するMicrosoft Entra アプリの登録を更新します。 アプリ登録にマップされている既存のアプリケーション ID URI がある場合は、マニフェスト エディターを使用して 、identifierUris セクションに別の URI を追加できます。

    "identifierUris": [
      "<<URI1>>"
      "<<URI2>>"
    ]
    

    注:

    Microsoft Entra 管理センターの UI では、複数の URI の追加はサポートされていません。 UI には、一覧の最初の URI のみが表示されます。 複数の URI を追加しても、UI で異なる方法で表示される場合でも、既存の URI とスコープには影響しません。

  2. [管理] の下の [認証] を選択します。 Web プラットフォームのリダイレクト URIhttps://teams.microsoft.com/api/platform/v1.0/oAuthConsentRedirectを追加します。

  3. [管理]の下の[API の公開]を選択します。 [ クライアント アプリケーションの追加] を選択し、Microsoft のエンタープライズ トークン ストアのクライアント ID を追加 ab3be6b7-f5df-413d-ac2d-abf1e3fd9c0b

SSO 登録 ID をプラグイン マニフェストに追加する

ランタイム認証オブジェクトtype プロパティを OAuthPluginVault に設定し、reference_idを Teams 開発者ポータルの Microsoft Entra SSO 登録 ID に設定します。

"auth": {
  "type": "OAuthPluginVault",
  "reference_id": "SSO registration ID"
},

新しいトークン対象ユーザーを API に追加する

トークン対象ユーザーとして新しい識別子 URI を許可するように API を更新します。 API がクライアント アプリケーション ID を検証する場合は、許可されているクライアント アプリケーションとして Microsoft エンタープライズ トークン ストアのクライアント ID (ab3be6b7-f5df-413d-ac2d-abf1e3fd9c0b) が追加されていることを確認します。

ヒント

API で代理フロー を使用して、ユーザーが同意を付与する必要がある別の Web API へのアクセスを取得する場合は、 401 Unauthorized エラーを返して、同意を付与するようにエージェントにサインインを求めます。

API キー認証

一部の API では、承認に API キーが使用されます。 API キーは、クライアントが認証とアクセスを取得するための API 要求に含まれる共有シークレットです。 API プラグインでは、次の 3 つの方法で API キーの送信がサポートされています。

  • Authorization ヘッダーのベアラー トークンとして
  • カスタム ヘッダーの値として
  • クエリ パラメーターとして

OpenAPI ドキュメントに API キーを追加する

Microsoft 365 Copilotは、OpenAPI ドキュメントのsecuritySchemesエントリに基づいて API キーを送信する方法を決定します。

ベアラー トークン

API がベアラー トークンとして API キーを受け入れる場合は、OpenAPI ドキュメントでベアラー認証を有効にします。 詳細については、「 ベアラー認証」を参照してください。

securitySchemes:
  BearerAuth:
    type: http
    scheme: bearer

カスタム ヘッダー

API がカスタム ヘッダーの API キーを受け入れる場合は、 in プロパティを header に設定し、 name プロパティをヘッダー名に設定して、OpenAPI ドキュメントで API キー認証を有効にします。 詳細については、「 API キー」を参照してください。

securitySchemes:
  ApiKeyAuth:
    type: apiKey
    in: header
    name: X-API-KEY

クエリ パラメーター

API がクエリ パラメーターで API キーを受け入れる場合は、 in プロパティを query に設定し、 name プロパティをクエリ パラメーターの名前に設定して、OpenAPI ドキュメントで API キー認証を有効にします。 詳細については、「 API キー」を参照してください。

securitySchemes:
  ApiKeyAuth:
    type: apiKey
    in: query
    name: api_key

API キーを登録する

API キー認証を有効にするには、Teams 開発者ポータルで API キーを登録する必要があります。 API キーは、Visual Studio Code の Teams Toolkit に登録するか、Teams 開発者ポータルで手動で登録することで登録できます。

Teams Toolkit に API キーを登録する

Teams Toolkit は、既存の OpenAPI ドキュメントから API プラグインを使用してエージェントを作成するときに、API キーを登録し、アプリ パッケージを更新します。 OpenAPI ドキュメントで securitySchemes プロパティを定義する必要があります。

注:

Teams Toolkit では、ベアラー トークンとして API キーのみがサポートされ、カスタム ヘッダーまたはクエリ パラメーターを使用する OpenAPI ドキュメントに基づいて API プラグインを作成することはできません。 回避策として、 securitySchemes プロパティと security プロパティを OpenAPI から一時的に削除してプラグイン パッケージを生成し、プロビジョニングする前にプラグイン プロジェクトの OpenAPI ドキュメントに追加し直すことができます。 API キーを手動で登録する必要があります。

Teams 開発者ポータルで API キーを登録する

  1. Teams 開発者ポータルを開きます。 [ツール] ->API キーの登録を選択します

  2. 既存の登録がない場合は、[ API キーの作成] を選択します。 既存の登録がある場合は、[ 新しい API キー] を選択します。

  3. [ シークレットの追加] を選択し、API キーを入力します。

  4. 次のフィールドに入力します。

    • API キー名: 登録のフレンドリ名。
    • ベース URL: API のベース URL。 この値は、OpenAPI ドキュメントの servers 配列 内のエントリに対応している必要があります。
    • ターゲット テナント: ホーム テナントへの API アクセスを制限するかどうか。
    • ターゲット Teams アプリ: 最終的 なアプリ ID がわからない場合は、[任意の Teams アプリ] を選択します。 アプリを発行したら、この登録を発行済みのアプリ ID にバインドします。
  5. [保存] を選択します。

  6. 登録を完了すると、 API キー登録 ID が生成されます。

API キー登録 ID をプラグイン マニフェストに追加する
  1. プラグイン マニフェスト ファイルで、ランタイム認証オブジェクトtype プロパティを ApiKeyPluginVault に設定し、reference_idを Teams 開発者ポータルの API キー登録 ID に設定します。
"auth": {
  "type": "ApiKeyPluginVault",
  "reference_id": "app key registration ID"
},

認証なし (匿名)

認証を必要としない API、または認証がまだ実装されていない開発者環境の場合、プラグインは API に匿名でアクセスできます。 この場合、ランタイム認証オブジェクトtype プロパティを None に設定します。

"auth": {
  "type": "None"
},