INTEGRITY Dokumentace

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.

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: &lt;JWT&gt;" --> app1["Internal API <br> (self-hosted app)"]
    mcp -- "Cf-Access-Token: &lt;JWT&gt;" --> app2["Company wiki <br> (self-hosted app)"]
    idp[Identity provider] <--> mcp

Předpoklady

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:

  1. V Cloudflare dashboard, přejděte na Zero Trust > Řízení přístupu > Aplikace.

  2. Vyberte downstream aplikaci a vyberte Úprava.

  3. Přejděte na Zásady kartu a vyberte Vytvořit novou zásadu.

  4. Nastavte zásadu Akce na Service Auth.

  5. Pro Selektor, vyberte Linked App Token.

  6. Pro Hodnota, vyberte aplikaci MCP serveru. Například,

    Akce Typ pravidla Selektor Hodnota
    Service Auth Include Linked App Token mcp-server-app
  7. Uložte zásadu.

  8. V navazující aplikaci přidejte zásadu do Zásady Access seznamu.

  9. Uložte aplikaci.

  1. Získejte uid aplikace serveru MCP:

    Požadovaná oprávnění API tokenu

    Alespoň jeden z následujících oprávnění tokenu je povinné:
    • Access: Apps and Policies Revoke
    • Access: Apps and Policies Write
    • Access: Apps and Policies Read
    List Access applications
    curl "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",
    	...
    }
  2. Vytvořte zásadu Access pro podřízenou aplikaci a nahraďte app_uid hodnotu s uid aplikace serveru MCP:

    Požadovaná oprávnění API tokenu

    Alespoň jeden z následujících oprávnění tokenu je povinné:
    • Access: Apps and Policies Write
    Vytvořit opakovaně použitelnou zásadu Access
    curl "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 &lt;token&gt;" --> app1["Internal API <br> (self-hosted app)"]
    mcp -- "Authorization: Bearer &lt;token&gt;" --> app2["Company wiki <br> (self-hosted app)"]
    idp[Identity provider] <--> mcp

Předpoklady

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:

  1. V Cloudflare dashboard, přejděte na Zero Trust > Řízení přístupu > Aplikace.

  2. Vyberte downstream aplikaci a vyberte Úprava.

  3. Přejděte na Zásady kartu a vyberte Vytvořit novou zásadu.

  4. Nastavte zásadu Akce na Service Auth.

  5. Pro Selektor, vyberte Linked App Token.

  6. Pro Hodnota, vyberte aplikaci MCP serveru. Například,

    Akce Typ pravidla Selektor Hodnota
    Service Auth Include Linked App Token mcp-server-app
  7. Uložte zásadu.

  8. V navazující aplikaci přidejte zásadu do Zásady Access seznamu.

  9. Uložte aplikaci.

  1. Získejte uid aplikace serveru MCP:

    Požadovaná oprávnění API tokenu

    Alespoň jeden z následujících oprávnění tokenu je povinné:
    • Access: Apps and Policies Revoke
    • Access: Apps and Policies Write
    • Access: Apps and Policies Read
    List Access applications
    curl "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",
    	...
    }
  2. Vytvořte zásadu Access pro podřízenou aplikaci a nahraďte app_uid hodnotu s uid aplikace serveru MCP:

    Požadovaná oprávnění API tokenu

    Alespoň jeden z následujících oprávnění tokenu je povinné:
    • Access: Apps and Policies Write
    Vytvořit opakovaně použitelnou zásadu Access
    curl "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_TOKEN

Známá omezení