← Cloudflare One / cloudflare-one / access-controls / ai-controls
Povolit serverům MCP přístup k interně hostovaným aplikacím
MCP servery často potřebují volat interní aplikace jménem ověřených uživatelů. Například MCP server, který zaměstnancům pomáhá pracovat s interními nástroji, musí předávat identitu uživatele těmto navazujícím službám (interním aplikacím, ke kterým se MCP server připojuje), aby byl každý požadavek autorizován se správnými oprávněními.
Linked App Token selektor zásad to umožňuje tím, že zásada Access na jedné aplikaci může přijímat tokeny vydané pro jinou. Existují dva způsoby, jak toto nastavit, v závislosti na tom, jak je váš server MCP nasazen.
Self-hosted server MCP (doporučeno)
Pokud je váš server MCP self-hosted aplikace Access, Cloudflare Access zajišťuje ověřování automaticky. Server MCP obdrží od Access JWT uživatele v Cf-Access-Jwt-Assertion hlavičku a měl by ji přeposílat navazujícím aplikacím v Cf-Access-Token hlavičky. V kódu vašeho serveru MCP není potřeba žádná implementace OAuth.
flowchart LR
accTitle: Self-hosted MCP server accessing internal applications
User --> client["MCP client"]
client --> mcp["MCP server <br> (self-hosted app)"]
mcp -- "Cf-Access-Token: <JWT>" --> app1["Internal API <br> (self-hosted app)"]
mcp -- "Cf-Access-Token: <JWT>" --> app2["Company wiki <br> (self-hosted app)"]
idp[Identity provider] <--> mcp
Předpoklady
- Přidejte podřízené aplikace (například svůj
Internal APIaCompany wiki) jako self-hosted aplikace Access. - Přidejte svůj server MCP jako self-hosted aplikace Access.
1. Nakonfigurujte downstream aplikace
Na každé aplikaci s vlastním hostingem, ke které potřebuje přistupovat server MCP (například Internal API a Company wiki aplikace), vytvořte zásadu Linked App Token:
-
V Cloudflare dashboard ↗, přejděte na Zero Trust > Řízení přístupu > Aplikace.
-
Vyberte downstream aplikaci a vyberte Úprava.
-
Přejděte na Zásady kartu a vyberte Vytvořit novou zásadu.
-
Nastavte zásadu Akce na Service Auth.
-
Pro Selektor, vyberte Linked App Token.
-
Pro Hodnota, vyberte aplikaci MCP serveru. Například,
Akce Typ pravidla Selektor Hodnota Service Auth Include Linked App Token mcp-server-app -
Uložte zásadu.
-
V navazující aplikaci přidejte zásadu do Zásady Access seznamu.
-
Uložte aplikaci.
-
Získejte
uidaplikace serveru MCP:
Alespoň jeden z následujících oprávnění tokenu je povinné:Požadovaná oprávnění API tokenu
Access: Apps and Policies RevokeAccess: Apps and Policies WriteAccess: Apps and Policies Read
List Access applicationscurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/apps" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "type": "self_hosted", "name": "mcp-server-app", ... } -
Vytvořte zásadu Access pro podřízenou aplikaci a nahraďte
app_uidhodnotu suidaplikace serveru MCP:
Alespoň jeden z následujících oprávnění tokenu je povinné:Požadovaná oprávnění API tokenu
Access: Apps and Policies Write
Vytvořit opakovaně použitelnou zásadu Accesscurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/policies" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "name": "Allow requests from MCP server", "decision": "non_identity", "include": [ { "linked_app_token": { "app_uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" } } ] }'
2. Nakonfigurujte svůj server MCP
V kódu svého serveru MCP předejte Cf-Access-Jwt-Assertion hlavičku z příchozích požadavků jako Cf-Access-Token hlavičku v odchozích požadavcích na navazující aplikaci:
Cf-Access-Token: <JWT from Cf-Access-Jwt-Assertion>Access nyní ověří token JWT oproti pravidlu Linked App Token a předá identitu uživatele navazující aplikaci.
SaaS MCP server (Access for SaaS s OAuth)
Pokud je váš server MCP zaregistrovaný jako OIDC aplikace Access for SaaS a implementuje MCP OAuth ↗, obdrží OAuth access_token ze služby Cloudflare Access. MCP server tento token předává navazujícím self-hosted aplikacím v Authorization: Bearer hlavička.
Tento přístup vyžaduje, aby váš server MCP implementoval OAuth authorization code flow. Použijte přístup se self-hosted MCP serverem, pokud chcete, aby ověřování za vás zajišťoval Cloudflare.
flowchart LR
accTitle: SaaS MCP server accessing internal applications
User --> client["MCP client"]
client --> mcp["MCP server <br> (Access for SaaS app)"]
mcp -- "Authorization: Bearer <token>" --> app1["Internal API <br> (self-hosted app)"]
mcp -- "Authorization: Bearer <token>" --> app2["Company wiki <br> (self-hosted app)"]
idp[Identity provider] <--> mcp
Předpoklady
- Přidejte podřízené aplikace (například svůj
Internal APIaCompany wiki) jako self-hosted aplikace Access. - Přidejte svůj server MCP jako OIDC aplikace Access for SaaS.
1. Nakonfigurujte downstream aplikace
Na každé aplikaci s vlastním hostingem, ke které potřebuje přistupovat server MCP (například Internal API a Company wiki aplikace), vytvořte zásadu Linked App Token:
-
V Cloudflare dashboard ↗, přejděte na Zero Trust > Řízení přístupu > Aplikace.
-
Vyberte downstream aplikaci a vyberte Úprava.
-
Přejděte na Zásady kartu a vyberte Vytvořit novou zásadu.
-
Nastavte zásadu Akce na Service Auth.
-
Pro Selektor, vyberte Linked App Token.
-
Pro Hodnota, vyberte aplikaci MCP serveru. Například,
Akce Typ pravidla Selektor Hodnota Service Auth Include Linked App Token mcp-server-app -
Uložte zásadu.
-
V navazující aplikaci přidejte zásadu do Zásady Access seznamu.
-
Uložte aplikaci.
-
Získejte
uidaplikace serveru MCP:
Alespoň jeden z následujících oprávnění tokenu je povinné:Požadovaná oprávnění API tokenu
Access: Apps and Policies RevokeAccess: Apps and Policies WriteAccess: Apps and Policies Read
List Access applicationscurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/apps" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "type": "saas", "name": "mcp-server-app", ... } -
Vytvořte zásadu Access pro podřízenou aplikaci a nahraďte
app_uidhodnotu suidaplikace serveru MCP:
Alespoň jeden z následujících oprávnění tokenu je povinné:Požadovaná oprávnění API tokenu
Access: Apps and Policies Write
Vytvořit opakovaně použitelnou zásadu Accesscurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/policies" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "name": "Allow requests from MCP server", "decision": "non_identity", "include": [ { "linked_app_token": { "app_uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" } } ] }'
2. Nakonfigurujte svůj server MCP
Nakonfigurujte server MCP tak, aby přeposílal access_token v odchozích požadavcích:
Authorization: Bearer ACCESS_TOKENZnámá omezení
- Zásadu Linked App Token lze přidat pouze do self-hosted aplikace. Nelze jej přidat do Aplikace SaaS nebo jiné typy aplikací.
- Tato funkce funguje nejlépe s aplikacemi, které se spoléhají na Cloudflare Access JWT pro ověřování a identitu. Pokud navazující aplikace implementuje vlastní vrstvu ověřování za Cloudflare Access, požadavky, které projdou ověřením Access, může aplikace přesto odmítnout.
- Když upstream aplikace používá Managed OAuth, klient obdrží neprůhledný přístupový token, nikoli JWT. Klient nemůže tento token přeposlat přímo navazujícím aplikacím jako
Cf-Access-Tokenhlavičky. Místo toho musí origin upstream aplikace přečístCf-Access-Jwt-Assertionhlavičky (která obsahuje získaný JWT) a přepošlete ji jakoCf-Access-Tokendo navazující aplikace. Pokud chcete, aby klienti přistupovali k více endpointům bez proxy, zvažte použití vícedoménová aplikace Access místo toho.