Hopp til innhold
ketl cloud
HjemMCPOAuth + Claude.ai

Claude.ai (sky) + MCP via OAuth 2.1

Claude Desktop autentiserer med statisk Bearer-token i konfigfilen. Claude.ai web støtter ikke statisk token — «Add custom connector»-dialogen krever full OAuth 2.1-flyt. ketl cloud implementerer OAuth 2.1 + Dynamic Client Registration (DCR) slik at sluttbruker bare limer inn MCP-server-URL, logger inn på data.ketl.no og godkjenner scopes — ingen client_id- eller secret-håndtering.

Status: 1/7 delleveranser er live. 6 pågår — UX-en er klar til å skru på når backend er deployet.

Detaljert leveranse i EPIC #963 (sub-issues #1008–#1014).

Slik kobler du Claude.ai til ketl

1
Åpne Claude.ai → Settings → Connectors
Krever et Pro/Team/Enterprise-abonnement. "Add custom connector"-dialogen tilbyr OAuth-modus.
2
Lim inn MCP-server-URL
Bruk https://data.ketl.no/mcp — ingen client_id, secret eller API-nøkkel.
3
Logg inn på ketl og godkjenn
Claude redirecter deg til /oauth/consent. Logg inn med samme konto du bruker på data.ketl.no, og godkjenn scope mcp:tools.
4
Ferdig — Claude bruker MCP-verktøyene
Access_token er audience-bundet til vår MCP-server (ikke en universal-nøkkel) og refreshes automatisk hver time.

Discovery-flyten (7 sub-issuer)

MCP-spec 2025-03-26 krever at klienter kan finne alle OAuth-endepunkter automatisk via well-known URLer. Her er kjeden Claude.ai går gjennom:

  1. 1

    Klient prøver MCP-kall uten token

    GET https://data.ketl.no/mcp/ → 401 Unauthorized

    WWW-Authenticate: Bearer realm="mcp", resource_metadata="https://data.ketl.no/.well-known/oauth-protected-resource"
  2. 2

    Klient henter Protected Resource Metadata (RFC 9728)

    GET https://data.ketl.no/.well-known/oauth-protected-resource → JSON med authorization_servers[]

    authorization_servers: ["https://data.ketl.no"]
  3. 3

    Klient henter Authorization Server Metadata (RFC 8414)

    GET https://data.ketl.no/.well-known/oauth-authorization-server → JSON med authorize/token/registration-endpoints

  4. 4

    Klient registrerer seg dynamisk (RFC 7591)

    POST https://data.ketl.no/oauth/register med redirect_uris[] → 201 med client_id

  5. 5

    Klient sender bruker til consent (PKCE S256)

    GET https://data.ketl.no/oauth/authorize?client_id=...&code_challenge=...&state=...

    Vi viser https://data.ketl.no/oauth/consent hvor bruker logger inn og godkjenner scopes.
  6. 6

    Klient bytter authorization_code mot tokens

    POST https://data.ketl.no/oauth/token med grant_type=authorization_code + code_verifier → JWT access_token + refresh_token

  7. 7

    Klient kaller MCP-tools

    GET/POST https://data.ketl.no/mcp/... med Authorization: Bearer <jwt>

    verifyMcpAuth verifiserer JWT lokalt (HS256), sjekker scope mcp:tools og audience https://data.ketl.no/mcp.

Sikkerhetsegenskaper

PKCE S256 obligatorisk

Plain code_challenge er ikke tillatt. RFC 7636-compliant Authorization Code-flyt — også for confidential clients.

Audience binding

Access_token utstedes med aud=https://data.ketl.no/mcp. Token kan ikke brukes mot tredjeparts-API selv om det skulle lekke.

JWT-lokal validering

MCP-handlers verifiserer access_token lokalt med HS256-signering (Secret Manager-key). 0 ekstra Firestore-read per MCP-kall.

Refresh-token-rotasjon

Hver refresh utsteder et nytt refresh_token og revokerer det forrige. Code-replay-deteksjon revokerer alle aktive tokens på den brukeren.

Server-only Firestore-tilstand

oauth_clients, oauth_codes, oauth_tokens og oauth_audit_log er deny-by-default for klient-SDK. Kun Cloud Functions kan lese/skrive.

TTL-policy

oauth_codes + oauth_pending = 10 minutter. oauth_audit_log = 90 dager. Automatisk opprydning via Firestore TTL.

Scopes

mcp:tools
Tilgang til MCP-tools på data.ketl.no/mcp/*. Default scope — obligatorisk for alle MCP-klienter.
offline_access
Refresh-token utstedes slik at klienten kan opprettholde sesjon uten ny consent. Klienten må respektere refresh-token-rotasjon.

Leveransestatus (per 15. mai 2026)

Sub-issueTittelStatus
#1008Firestore-skjemaPågår
#1009RFC 9728 PRMLive
#1010RFC 8414 AS MetadataPågår
#1011RFC 7591 DCRPågår
#1012Authorize + consentPågår
#1013Token endpointPågår
#1014verifyMcpAuth utvidelsePågår

Spec-referanser

  • RFC 7591 — Dynamic Client Registration
  • RFC 7636 — Proof Key for Code Exchange (PKCE)
  • RFC 8414 — Authorization Server Metadata
  • RFC 9728 — Protected Resource Metadata
  • MCP Authorization (spec 2025-03-26)
KETLData
DataApperMCPPriser
AI-transparensPersonvernSikkerhet

© 2026 ketl cloud

build b7038ed8