適用対象: Basic | Basic v2 | Standard | Standard v2 | Premium | Premium v2
API Management での MCP サーバーのサポートにより、MCP サーバーとそのツールへのアクセスを公開および管理できます。 この記事では、管理された REST API から公開されている MCP サーバーと API Management の外部でホストされている既存の MCP サーバーの両方を含め、API Management で管理されている MCP サーバーへのアクセスをセキュリティで保護する方法について説明します。
MCP サーバーへの受信アクセス (MCP クライアントから API Management) と送信アクセス (API Management から MCP サーバーへの) のいずれかまたは両方をセキュリティで保護できます。
受信アクセスをセキュリティで保護する
キーベースの認証
MCP サーバーが Ocp-Apim-Subscription-Key
ヘッダーで渡された API Management サブスクリプション キーで保護されている場合、MCP クライアントは受信要求でキーを提示でき、MCP サーバーはキーを検証できます。 たとえば、Visual Studio Code では、 headers
セクションを MCP サーバー構成に追加して、要求ヘッダーにサブスクリプション キーを要求できます。
{
"name": "My MCP Server",
"type": "remote",
"url": "https://my-api-management-instance.azure-api.net/my-mcp-server",
"transport": "streamable-http",
"headers": {
"Ocp-Apim-Subscription-Key": "<subscription-key>"
}
}
注
Visual Studio Code ワークスペースの設定または安全な入力を使用して、サブスクリプション キーを安全に管理します。
トークン ベースの認証 (Microsoft Entra ID を使用した OAuth 2.1)
MCP クライアントは、 Authorization
ヘッダーを使用して Microsoft Entra ID によって発行され、API Management によって検証された OAuth トークンまたは JWT を提示できます。
たとえば、 validate-azure-ad-token ポリシーを使用して Microsoft Entra ID トークンを検証します。
<validate-azure-ad-token tenant-id="your-entra-tenant-id" header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
<client-application-ids>
<application-id>your-client-application-id</application-id>
</client-application-ids>
</validate-azure-ad-token>
トークンをバックエンドに転送する
既定では、API Management は、 Authorization
などの受信ヘッダーを MCP サーバー バックエンドに自動的に転送しません。 現在、トークンを安全に転送するには、次のオプションがあります。
API 設定で必要なヘッダーとして
Authorization
を明示的に定義し、Outbound
ポリシーでヘッダーを転送します。ポリシー スニペットの例:
<!-- Forward Authorization header to backend --> <set-header name="Authorization" exists-action="override"> <value>@(context.Request.Headers.GetValueOrDefault("Authorization"))</value> </set-header>
API Management 資格情報マネージャーとポリシー (
get-authorization-context
、set-header
) を使用して、トークンを安全に転送します。 詳細については、 送信アクセスのセキュリティ保護 に関するページを参照してください。
その他の受信承認オプションとサンプルについては、以下を参照してください。
送信アクセスをセキュリティで保護する
API Management の 資格情報マネージャー を使用して、MCP サーバー ツールによって行われたバックエンド API 要求に OAuth 2.0 トークンを安全に挿入します。
OAuth 2 ベースの送信アクセスを構成する手順
手順 1: ID プロバイダーにアプリケーションを登録します。
手順 2: ID プロバイダーにリンクされた API Management で資格情報プロバイダーを作成します。
手順 3: 資格情報マネージャー内で接続を構成します。
手順 4: API Management ポリシーを適用して、資格情報を動的にフェッチしてアタッチします。
たとえば、次のポリシーは、資格情報マネージャーからアクセス トークンを取得し、送信要求の Authorization
ヘッダーに設定します。
<!-- Add to inbound policy. -->
<get-authorization-context
provider-id="your-credential-provider-id"
authorization-id="auth-01"
context-variable-name="auth-context"
identity-type="managed"
ignore-error="false" />
<!-- Attach the token to the backend call -->
<set-header name="Authorization" exists-action="override">
<value>@("Bearer " + ((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</value>
</set-header>
資格情報マネージャーで生成された資格情報を使用してバックエンドの例を呼び出す詳細なガイドについては、「 資格情報マネージャーの構成 - GitHub」を参照してください。