OAuth で保護された API と API プラグインを統合する

完了

API をセキュリティで保護するもう 1 つの一般的なパターンは、OAuth を使用することです。 OAuth は、承認のための業界標準のプロトコルです。 OAuth は、アクセス トークンを使用してリソースへのアクセスをセキュリティで保護します。 アクセス トークンを取得するには、アプリケーションを ID プロバイダーに登録し、パブリック クライアントや機密クライアントなど、その種類を指定します。 アプリケーションの種類によっては、シークレットや証明書などの追加設定を構成する必要がある場合があります。

ユーザーがアプリケーションを開くと、アクセス トークンを取得するプロセスが開始されます。 アプリケーションが従う正確な手順は、アプリケーションの種類と、アプリケーションが使用するフローによって異なります。 ユーザーが承認フローを完了すると、API の呼び出しに使用できるアクセス トークンが取得されます。

OAuth で保護された API と API プラグインを統合する場合は、API をセキュリティで保護するアプリケーションのクライアント ID とクライアント シークレットが必要です。 また、ID プロバイダーの承認、トークン、および必要に応じてエンドポイントを更新する必要もあります。 Microsoft 365 Copilotは、この情報を使用して、現在のユーザーに代わって API で認証し、アクセス トークンを取得します。 情報は機密であるため、Microsoft 365 のセキュリティで保護されたストレージの場所 (コンテナーとも呼ばれます) に安全に保存します。 次に、アプリでコンテナー エントリの ID を参照します。 実行時に、宣言型エージェントはプラグイン (2) を読み込み、指定されたエントリ (3a) から情報を取得します。 宣言型エージェントは、認証コード許可の種類 (認証コード フローとも呼ばれます) に従って、API (3c) の呼び出しに使用するアクセス トークン (3b) を取得します。 次の図はこの手順を示しています。

宣言型エージェントが、OAuth でセキュリティ保護された API に接続された API プラグインを実行する方法を示す図。

プラグインの OAuth 情報を構成するときに、必要に応じて Proof Key for Code Exchange (PKCE) を有効にすることができます。 機密クライアントを使用して API プラグインをセキュリティで保護する場合でも、アプリケーションに最小限のオーバーヘッドでセキュリティレイヤーが追加されるため、PKCE を使用することをお勧めします。

コンテナーに OAuth 情報を格納すると、セキュリティを維持し、クライアントに公開しないようにすることができます。 プラグインはエントリのみを参照するため、プラグインを再デプロイすることなくクライアント シークレットを更新することもできます。

開発中は、開発 OAuth 情報を自分でコンテナーに登録できます。手動で Teams 開発者ポータル に移動し、[ ツール ] セクションで OAuth クライアント登録を開くか、Microsoft 365 Agents Toolkit を使用します。 運用環境では、通常、管理者が OAuth 情報を登録し、API プラグインで使用するコンテナー エントリの ID を提供します。

Teams 開発者ポータルの OAuth クライアント登録ページのスクリーンショット。