Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
BERLAKU UNTUK: Pengembang | Basic | Basic v2 | Standar | Standar v2 | Premium | Premium v2
Dengan dukungan server MCP di API Management, Anda dapat mengekspos dan mengatur akses ke server MCP dan alatnya. Artikel ini menjelaskan cara mengamankan akses ke server MCP yang dikelola di API Management, termasuk kedua server MCP yang diekspos dari REST API terkelola dan server MCP yang ada yang dihosting di luar API Management.
Anda dapat mengamankan akses masuk atau ke server MCP (dari klien MCP ke API Management) dan akses keluar (dari API Management ke server MCP).
Mengamankan akses masuk
Autentikasi berbasis kunci
Jika server MCP dilindungi dengan kunci langganan API Management yang diteruskan di Ocp-Apim-Subscription-Key header, klien MCP dapat menyajikan kunci dalam permintaan masuk, dan server MCP dapat memvalidasi kunci. Misalnya, di Visual Studio Code, Anda dapat menambahkan headers bagian ke konfigurasi server MCP untuk memerlukan kunci langganan di header permintaan:
{
"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>"
}
}
Nota
Kelola kunci langganan dengan aman menggunakan pengaturan ruang kerja Visual Studio Code atau input aman.
Autentikasi berbasis token (OAuth 2.1 dengan ID Microsoft Entra)
Klien MCP dapat menyajikan token OAuth atau JWT yang dikeluarkan oleh MICROSOFT Entra ID menggunakan Authorization header dan divalidasi oleh API Management.
Misalnya, gunakan kebijakan validate-azure-ad-token untuk memvalidasi token ID Microsoft Entra:
<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>
Meneruskan token ke backend
Header permintaan secara otomatis diteruskan (dengan pengecualian tertentu) ke pemanggilan alat MCP, menyederhanakan integrasi dengan API hilir yang mengandalkan header untuk perutean, konteks, atau autentikasi.
Jika Anda memerlukan penerusan Authorization header eksplisit untuk memvalidasi permintaan masuk, Anda dapat menggunakan salah satu pendekatan berikut:
Tentukan
Authorizationsecara eksplisit sebagai header yang diperlukan di pengaturan API dan teruskan header dalamOutboundkebijakan.Contoh cuplikan kebijakan:
<!-- Forward Authorization header to backend --> <set-header name="Authorization" exists-action="override"> <value>@(context.Request.Headers.GetValueOrDefault("Authorization"))</value> </set-header>Gunakan manajer dan kebijakan kredensial API Management (
get-authorization-context,set-header) untuk meneruskan token dengan aman. Lihat Mengamankan akses keluar untuk detailnya.
Untuk opsi dan sampel otorisasi masuk lainnya, lihat:
Otorisasi server MCP dengan sampel Metadata Sumber Daya Terlindungi (PRM)
Mengamankan Server MCP Jarak Jauh menggunakan Azure API Management (Eksperimental)
Mengamankan akses keluar
Gunakan manajer kredensial API Management untuk menyuntikkan token OAuth 2.0 dengan aman untuk permintaan API backend yang dibuat oleh alat server MCP.
Langkah-langkah untuk mengonfigurasi akses keluar berbasis OAuth 2
Langkah 1: Daftarkan aplikasi di IdP.
Langkah 2: Buat penyedia kredensial di API Management yang ditautkan ke idP.
Langkah 3: Mengonfigurasi koneksi dalam pengelola kredensial.
Langkah 4: Terapkan kebijakan API Management untuk mengambil dan melampirkan kredensial secara dinamis.
Misalnya, kebijakan berikut mengambil token akses dari manajer kredensial dan mengaturnya di Authorization header permintaan keluar:
<!-- 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>
Untuk panduan langkah demi langkah untuk memanggil contoh backend menggunakan kredensial yang dihasilkan di pengelola kredensial, lihat Mengonfigurasi pengelola kredensial - GitHub.