プラグインは、OAuth 2.0 認証コード フローを通じて取得されたベアラー トークンを使用してモデル コンテキスト プロトコル (MCP) サーバーまたは API にアクセスできます。コード交換用プルーフ キー (PKCE) のサポートが既定で有効になっています。 このフローでは、Microsoft 365 Copilot がサインイン エクスペリエンスを開き、OAuth プロバイダーが Microsoft Teams に認証応答を返し、Teams が認証コードをトークンと交換します。
この記事では、既定のチュートリアルとして MCP プラグインを使用します。 明記されていない限り、OpenAPI ドキュメントからビルドされた API プラグインにも同じ手順が適用されます。
OAuth 2.0 認証を 3 つの手順で構成します: OAuth クライアントを ID プロバイダーに登録し、リダイレクト URI を構成し、OAuth 2.0 構成を作成します。
手順 1: OAuth クライアントを ID プロバイダーに登録する
OAuth 2.0 プロバイダー (ID プロバイダー) にアプリを登録してクライアント ID を取得し、機密 (Web) クライアントの場合は クライアント シークレットを取得します。 手順 3 で OAuth 2.0 構成を作成するときに、これらの値を指定します。
認証が必要な MCP サーバーの場合は、ランタイム認証オブジェクトの type プロパティを OAuthPluginVault に設定します。
None また、 ApiKeyPluginVault 認証を必要とする MCP サーバーには適用されません。 認証構成 ID のみがマニフェストに保存されます。クライアント ID、クライアント シークレット、またはトークンは書き込まれません。 クライアントを静的ではなく動的に登録するには、type をOAuthPluginVaultのままにし、動的クライアント登録 (DCR) を使用して認証構成を作成します。これは、Microsoft Entra ID によって保護されているサーバーでは使用できません。
注:
これらの値はプラグイン マニフェストに適用されます。 代わりに、Microsoft 365 アプリ マニフェストの agentConnectors ノードで MCP サーバーをエージェント コネクタとして登録する場合は、そこでも OAuthPluginVault または DynamicClientRegistration を使用します。
AzureKeyVault は使用しないでください。devPreview スキーマにのみ存在するため、番号付きスキーマ バージョンを対象とするパッケージは検証に失敗します。 詳細については、「 MCP サーバーをエージェント コネクタとして登録する」を参照してください。
手順 2: リダイレクト URI を構成する
次のリダイレクト URI (認証コールバック URL とも呼ばれます) を OAuth プロバイダー登録に追加します。
https://teams.microsoft.com/api/platform/v1.0/oAuthRedirect
これは、ユーザーがサインインした後に OAuth プロバイダーが認証応答を送信する URL です。 Teams はこのコールバック URL で応答を受信し、トークンと認証コードを交換します。 このリダイレクト URI をプロバイダーに登録していない場合、サインインは失敗します。 リダイレクト URI はすべてのプラグインとプロバイダーで同じです。アプリごとにカスタマイズする必要はありません。
手順 3: OAuth 2.0 認証構成を作成する
OAuth 2.0 認証は、認証構成 (auth config) に依存します。これは、Microsoft 365 Copilot が MCP プラグインのトークンを取得および更新するために使用する Microsoft Enterprise トークン ストアに保存されているレコードです。 認証構成は、次の 3 つの方法で作成できます。 推奨される方法 (Microsoft 365 Agents Toolkit および宣言型エージェント開発者スキル) - 認証構成を作成し、プラグイン マニフェストを自動的に更新します。 その後、Teams 開発者ポータルを使用して、認証構成を管理および調整できます。
どのように作成しても、認証構成には、プラグイン マニフェストが参照する 認証構成 ID があります。
Microsoft 365 Agents Toolkit を使用する (推奨)
MCP プラグインを使用してエージェントを構築するか (サーバーが認証を必要とする場合)、または Microsoft 365 Agents Toolkit の既存の OpenAPI ドキュメントから API プラグインを作成すると、ツールキットから OAuth クライアント ID、クライアント シークレット、およびスコープの入力を求められます。 Agents Toolkit は、承認、トークン、および更新のエンドポイントを MCP サーバーの既知のエンドポイント (または API プラグインの OpenAPI ドキュメント) から取得し、エンタープライズ トークン ストアに認証構成を作成し、プラグイン マニフェストの ランタイム認証オブジェクト を自動的に更新します。
注:
API プラグインの場合は、Agents Toolkit が OAuth の詳細を読み取ることができるように、OpenAPI ドキュメントで securitySchemes プロパティを定義する必要があります。 詳細については、 OAuth 2.0 を参照してください。
securitySchemes:
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: <authorization_url>
tokenUrl: <token_url>
refreshUrl: <refresh_url>
scopes:
scope: description
多くの組織がクライアント シークレットをブロックするため、PKCE は既定で有効になっています。 OAuth プロバイダーが PKCE をサポートしていない場合にのみ、エージェントをプロビジョニングする前に、エージェント プロジェクトの m365agents.yml でfalseisPKCEEnabledを設定します。
isPKCEEnabled: false
クライアント シークレットを完全に回避するには、パブリック クライアントをプロバイダー (Web プラットフォームではなくシングルページ アプリケーション プラットフォーム) に登録し、PKCE にコード交換をセキュリティで保護させます。
宣言型エージェント開発者スキルを使用する
宣言型エージェント開発者スキル (declarative-agent-developer) は、宣言型エージェントの構築に必要な知識をパッケージ化した Microsoft Work IQ のエージェント スキルです。 自分でコマンドを実行したり、マニフェストを編集したりする代わりに、必要な内容を自然言語で Copilot または GitHub CLI に記述すると、スキルが宣言型エージェントのスキャフォールディング、MCP プラグインの追加、認証構成の処理を自動的に行います。 このスキルは MCP プラグインのみをサポートします。 OAuth 2.0 の場合、静的登録と 動的クライアント登録 (DCR) の両方をサポートします。エンタープライズ トークン ストアに認証構成が作成され、手動の手順なしでプラグイン マニフェストが更新されます。
ヒント
宣言型エージェント開発者スキルの使用に関するビデオ チュートリアルについては、「 宣言型エージェント開発者スキルを使用して宣言型エージェントを構築する」を参照してください。
Teams 開発者ポータルを使用する
エージェント ツールキットまたは宣言型エージェント開発者スキルを使用する場合、Teams 開発者ポータルへの登録はオプションです。 これは、認証設定を手動で作成する場合、またはより一般的には、エージェントツールキットまたはスキルがすでに作成した認証設定を管理する場合に使用します。 ポータルでは、認証構成を特定の Teams アプリまたは Microsoft 365 organization に制限し、その他のプロパティを変更できます。
Teams 開発者ポータルでの OAuth クライアント登録は、エージェントのプラグイン構成を、MCP サーバーまたは API のトークンを発行する OAuth プロバイダー登録に接続します。 この登録の値は、OAuth プロバイダー、プラグイン マニフェスト、および保護された API エンドポイントと一致する必要があります。 ベース URL、アプリの制限、または認証構成 ID が一致しないと、ユーザーがサインインできなかったり、トークン交換がブロックされたりする可能性があります。
警告
任意の Teams アプリへの登録を制限します。 特定の Teams アプリに制限されている登録は、その Teams アプリ ID にバインドされます。 Microsoft 365 Copilot は MCP サーバーを呼び出すときにその ID を解決しないため、プロビジョニングは正常に完了し、ツール呼び出しごとに404エラーが返されます。
Teams 開発者ポータルを開きます。 [ツール] -[>OAuth クライアント登録] を選択します。
既存の登録がない場合は、[ クライアントの登録] を選択します。 既存の登録がある場合は、[ 新しい OAuth クライアント登録] を選択します。
次のフィールドに入力します。
- 登録名: 登録のフレンドリ名。
-
ベース URL: API のベース URL。 この値は、MCP ベースのプラグイン用のプラグイン マニフェスト内の MCP サーバー仕様オブジェクトの
urlプロパティ内の URL、または API プラグイン用の OpenAPI ドキュメントのservers配列内のエントリに対応する必要があります。 - 組織別の使用を制限する: この OAuth 登録を使用して API エンドポイントにアクセスできる Microsoft 365 組織を選択します。 My organization は、1 つのテナントでの開発またはテストにのみ使用します。 プラグインがテナント間で動作する必要がある場合は、任意の Microsoft 365 organization を使用します。
-
アプリによる使用を制限する: [任意の Teams アプリ] を選択します。 MCP サーバーの 既存の Teams アプリ ID に登録をバインドしないでください。 代わりに Microsoft 365 Agents Toolkit を使用して認証構成をプロビジョニングする場合、m365agents.yml の
oauth/registerアクションで同等の設定がapplicableToApps: AnyAppになります。 プロビジョニング ドライバーが無条件にappIdを検証し、それを削除するとプロビジョニングが中断されるため、AnyAppによって不活性にしても、そのアクションではappIdフィールドを保持します。 - クライアント ID: OAuth 2.0 プロバイダーによって発行されたクライアント ID またはアプリケーション ID。
- クライアント シークレット: OAuth 2.0 プロバイダーによって発行されたクライアント シークレット。
- 認証エンドポイント: アプリが 認証コードを要求するために使用する OAuth 2.0 プロバイダーからの URL。
- トークン エンドポイント: アプリが アクセス トークンのコードを引き換えるために使用する OAuth 2.0 プロバイダーからの URL。
- 更新エンドポイント: アプリがアクセス トークンの更新に使用する OAuth 2.0 プロバイダーからの URL。
-
スコープ: プラグインが OAuth プロバイダーに要求するアクセス許可。 プロバイダーと API で必要なスコープ値を使用します。 プロバイダーが Microsoft ID プラットフォーム を使用し、プラグインに更新トークンが必要な場合は、API 固有の委任スコープに
offline_accessを含めます。 - コード交換の証明キー (PKCE) を有効にする: この設定は有効のままにします。 既定ではオンになっています。OAuth プロバイダーが PKCE をサポートしていない場合にのみ無効にしてください。
[保存] を選択します。
登録を完了すると、認証構成が作成され、 認証構成 ID (現在 Teams 開発者ポータルで OAuth クライアント登録 ID というラベルが付けられています) が生成されます。
プラグイン マニフェストに認証構成 ID を追加する
Teams 開発者ポータルで認証構成を手動で作成する場合は、ランタイム認証オブジェクトの type プロパティを OAuthPluginVault に設定し、reference_idを認証構成 ID に設定します。 エージェント ツールキットと宣言型エージェント開発者スキルは、これを行います。
"auth": {
"type": "OAuthPluginVault",
"reference_id": "auth config ID"
},
Microsoft Entra ID に関する考慮事項
Microsoft Entra ID を使用して MCP サーバーを保護する場合、ツールでは回避できない 3 つの制約が適用されます。
- 動的クライアント登録は使用できません。 Microsoft Entra ID は RFC 7591 登録エンドポイントを発行しないため、動的クライアント登録に登録する対象は何もありません。 この記事の手順に従って、OAuth クライアントを静的に登録します。
-
agentConnectorsノードにはMicrosoft Entra認証の種類はありません。composeExtensionsとは異なり、Microsoft 365 アプリ マニフェストのagentConnectorsノードにはmicrosoftEntra承認の種類はありません。 Microsoft Entra ID によって保護されている MCP サーバーでは、サーバーがファースト パーティの Microsoft API をフロントにしている場合でも、Microsoft Entra ID に自分で登録したアプリと OAuth 認証構成が常に必要です。 - プロビジョニング時にスコープの同意が検証されません。 プロビジョニングでは、要求したスコープに同意できるかどうかはチェックされません。 プロビジョニングに正常に同意できず、後で 管理者の承認が必要で失敗するスコープ。リソース アプリは、自分とテナント管理者の両方に非表示になる可能性があります。プロビジョニングする前に、管理者がスコープに同意したことを確認します。
認証構成の管理
m365agents.yml の oauth/register アクションは、認証構成を作成するか、認証構成の作成をスキップします。既存のレコードは書き換えません。
-
configurationIdに既に値がある場合、このアクションは何も行いません。 -
configurationIdが削除済みの登録をポイントする場合、アクションは警告を表示し、何も実行しません。 - 既存の登録の値を変更するには、
oauth/updateアクションを使用します。 - 登録を削除するには、 Teams 開発者ポータルを使用します。 削除できる唯一の場所です。
サインアウトする
注:
ユーザーは、Microsoft 365 Copilot の [Chat settings>Agents] からエージェントからサインアウトできます。 このアクションにより、格納されている OAuth トークンがクリアされます。