A Composer MCP-hozzáférés védelme Cognito OAuth használatával

A Composer Amazon Cognito access tokenekkel védheti MCP-végpontját, miközben a hivatalos WordPress MCP Adapter transport hookjait használja. Nem cseréli le az Adaptert, és nem hoz létre árnyék WordPress-felhasználót minden külső principalhoz.

Az engedély a következők legkisebb jogosultságú metszete:

  1. a token Cognito-csoportjából képzett Composer-szerep;
  2. az OAuth App Clienthez engedélyezett legmagasabb szerep;
  3. az access tokenben ténylegesen megadott Composer scope-ok;
  4. az aktív Site Contract, Blueprint, tulajdonosi, validációs és emberi jóváhagyási szabályok.

Hozzáférési módok

  • Open: megtartja a visszafelé kompatibilis WordPress-hitelesített útvonalat.
  • Protected: bearer token esetén ellenőrzi a Cognitót, és megtarthatja a konfigurált kompatibilitási útvonalat.
  • Protected Required: fail-closed mód. A teljes identity provider, csoport- és klienskonfiguráció nélkül nem tesz elérhetővé Composer-eszközt, és minden MCP- kéréshez érvényes bearer token kell.

A módot a Site Contract és az MCP Access képernyőn tudatosan válassza ki. Protected Required csak sikeresen tesztelt OAuth-kör után legyen aktív.

Identity provider

A Composer más WP Suite-komponensből is feloldhatja az AWS-régiót és User Pool ID-t. Az adminfelület megmutatja a tényleges régiót, poolt, issuert, JWKS URL-t, forrást és készenléti állapotot. Hibás vagy hiányzó feloldásnál kapcsolja be a kézi konfigurációt, és adja meg mindkét értéket.

AWS Region: eu-central-1
User Pool ID: eu-central-1_AbCd1234
Issuer: https://cognito-idp.eu-central-1.amazonaws.com/eu-central-1_AbCd1234

Ezek nem titkok. Client secret és privát kulcs nem kerülhet a Composerbe.

Cognito domain és publikus App Client

Az OAuth-hoz User Pool domain kell. Válasszon generált Cognito prefix domaint, vagy a szükséges ACM-tanúsítvánnyal és DNS-sel rendelkező custom domaint. Egy App Client önmagában nem elég: domain nélkül nincs Hosted UI authorization endpoint.

A dedikált publikus App Client beállításai:

  • authorization code grant;
  • PKCE S256;
  • nincs client secret;
  • az MCP-kliens által megadott pontos HTTPS callback URL;
  • openid és az alábbi Composer resource-server scope-ok;
  • szükség esetén refresh token.

A WP Suite orchestration v1.0.93-tól új vagy meglévő User Poolhoz opcionálisan létrehozza a Composer resource servert és App Clientet. Új poolnál a deployment wizard generált vagy custom Cognito domaint is kér. Külsőleg kezelt meglévő pool megtarthatja a külön kezelt domainjét. A stack AgentComposerMcpOAuthClientId outputját másolja a Composer OAuth-kliens leképezésébe.

A callback egyezése karakterpontos, az útvonal és a záró perjel is számít.

Csoportok, szerepek, kliensek és scope-ok

A cognito:groups pontos értékeit rendelje Composer-szerepekhez. Több csoportnál a legmagasabb leképezett szerep az alap. Minden App Client ID-hez adjon helyi címkét és maximum szerepet; a klienskorlát csak csökkentheti a csoportszerepet.

Támogatott OAuth scope-ok:

openid
composer/read
composer/draft
composer/propose
composer/publish.request

A Composer a Cognito resource-server scope-okat belső composer.read, composer.draft, composer.propose és composer.publish.request nevekre normalizálja. Régi Cognito-rendszer sc.group.<group> scope-okat is képezhet. A hitelesített csoport forrása a signed cognito:groups claim; scope nem találhat ki csoporttagságot.

A jelenleg tesztelt legacy Cognito-folyamatban az openid kérése szükséges volt a kívánt claim útvonalhoz. Ez nem jelenti azt, hogy a ChatGPT OIDC email/domain claiming funkcióját be kell kapcsolni. A Composer az aláírt access tokent ellenőrzi, nem az ID tokent, és nem hirdet issuer-invalid proxy OIDC-dokumentumot.

A discovery hitelesítés előtt publikus

Az MCP protected-resource metadata, az OAuth authorization-server metadata és a 401-es WWW-Authenticate challenge bearer token nélkül is elérhető kell legyen. Különben a kliens nem tudja megtanulni, hogyan hitelesítsen.

Ennek működnie kell közvetlen HTTP-n a /wp-json/mcp/smartcloud-agent-composer útvonalon és az ugyanerre mutató OpenAI Secure MCP Tunnel HTTP profilon keresztül is. Régi STDIO tunnel nem továbbítja a külső HTTP challenge-et és bearer tokent. Site-onként mentse, migrálja HTTP-re, indítsa újra és ellenőrizze a discoveryt, mielőtt újracsatlakoztatja a klienst.

ChatGPT beállítása

  1. A developer-mode appban válassza a megfelelő site-tunnelt vagy közvetlen URL-t.
  2. Az Advanced OAuth settings alatt válasszon user-defined public OAuth clientet.
  3. Másolja pontosan a ChatGPT callback URL-jét a Cognito App Clientbe.
  4. Adja meg a Client ID-t; a secret maradjon üres, a token endpoint auth none.
  5. Kérje az openid és a munkafolyamathoz szükséges Composer scope-okat.
  6. Végezze el a Cognito Hosted UI login és consent folyamatát.
  7. Reconnect után ellenőrizze az action katalógust, és először read-only műveletet futtasson.

401 vagy 403

  • 401 Authentication required: hiányzó, hibás vagy lejárt token, rossz issuer/audience/client, illetve sikertelen aláírás-ellenőrzés.
  • 403 Forbidden: a hitelesítés sikerült, de a csoport, klienskorlát, scope, szerep, tulajdonjog vagy Site Contract tiltja a műveletet.

Ezeket ne WordPress Administrator joggal vagy a szerződés kikapcsolásával javítsa. Az Audit & portability képernyőn nézze meg a redaktált eseményrészleteket.

Audit és tokenbiztonság

A Composer manipulációt jelző auditláncban rögzíti a hozzáférési döntéseket, befejezett tool hívásokat, külső principal identitását, eredményt és redaktált diagnosztikát. Az adminfelület böngésző szerinti helyi időt és zónát mutat, a részletekben pedig megőrzi a pontos UTC-időt.

A teljes bearer tokent, Authorization headert, client secretet, kérési argumentumot vagy tool eredményt sosem szabad tárolni vagy megjeleníteni.

Élesítési ellenőrzőlista

  • A feloldott régió, pool, issuer és JWKS URL helyes.
  • A generált/custom domain kiszolgálja a Hosted UI-t.
  • A publikus kliens code + PKCE S256 módot és pontos callbacket használ.
  • A szükséges csoportok az access tokenben vannak és pontosan le vannak képezve.
  • A Client ID, maximum szerep és engedélyezett Composer scope-ok helyesek.
  • Az ismeretlen kliensek a szabályzat szerint elutasításra kerülnek.
  • A discovery bearer nélkül is működik a kiválasztott HTTP útvonalon/tunnelen.
  • A Reader, Contributor és Publisher határai külön teszteltek.
  • A Publisher jóváhagyást kérhet, de közvetlenül nem publikálhat.
  • A sikeres és tiltott hívások érzékeny adat nélkül megjelennek az auditban.

Transport beállítás: Közvetlen MCP vagy Secure Tunnel és ChatGPT.