Når AI’en får nøgler til Auth

Forestil dig at du beder Cursor: «Opret en OAuth-klient til min nye SPA og tilføj redirect-URI’en» — og den gør det rigtigt. Det er MCP: en protokol der giver AI-agenter dokumenterede værktøjer i stedet for at gætte REST-kald.

Indhold 1. Historien 2. Hvad er MCP? 3. Flowet 4. Tools 5. Workshop 6. Opsætning 7. Sikkerhed 8. Prøv live

1. Historien: fra prompt til produktion

På AI-prompt-siden lærer du AI’en at skrive korrekt OAuth-kode. MCP går et skridt videre: AI’en kan administrere Auth-platformen — registrere klienter, læse brugerkataloget, tjekke health — med de samme regler som admin-API’et.

Uden MCP
  • Du kopierer client_id manuelt fra Admin → Klienter
  • AI’en gætter endpoints og glemmer PKCE
  • Fejl findes først når login fejler i browseren
Med Mercantec Auth MCP
  • Agenten kalder auth_create_client + redirect-URI
  • Manifestet er én tool-kald væk (auth_get_manifest)
  • Samme API-nøgle-mønster som Dokploy MCP
Undervisningspointe: MCP er ikke “magi”. Det er en tynd wrapper om HTTPS + en API-nøgle. Hvis du forstår admin-REST, forstår du MCP — tools er bare pæne navne ovenpå.

2. Hvad er Model Context Protocol?

MCP (Model Context Protocol) er en åben standard for, hvordan en AI-klient (fx Cursor) opdager og kalder tools hos en MCP-server. Serveren kører typisk lokalt som en stdio-proces; klienten sender JSON-RPC over stdin/stdout; serveren oversætter til jeres API.

Analogien: Dokploy MCP styrer deploy. Auth MCP styrer login-identitet. Begge bruger en central nøgle i mcp.json — aldrig i git.

3. Flowet (fire hop)

sequenceDiagram autonumber actor Dig as Dig i Cursor participant MCP as Auth MCP (stdio) participant API as auth.mercantec.tech participant DB as Postgres Dig->>MCP: Brug tool auth_create_client MCP->>API: POST /api/admin/clients + x-api-key API->>API: Validér nøgle / Admin-JWT API->>DB: Insert ClientApp DB-->>API: OK API-->>MCP: JSON (klient + evt. secret) MCP-->>Dig: Svar i chatten

Agenten ser aldrig din database direkte. Den ser kun det, tools returnerer — derfor er tool-beskrivelser og statuskoder en del af “pensum” for AI’en.

4. Tools i v1 — pensumkort

Tre fag, ét API. Husk: admin-tools kræver at AUTH_MCP_API_KEY er sat i Cursor.

Discovery

Offentligt · godt som første øvelse

OAuth-klienter

Det I ellers gør under Admin → Klienter

Brugere & usage

Directory, merge, slet, forbrug

5. Workshop: tre prompts til elever

Øvelse A

Discovery først

Ingen nøgle nødvendig — start her hvis MCP lige er installeret.

Brug Mercantec Auth MCP: kør auth_health og auth_get_manifest.
Opsummér issuer, audience og hvad mcp-blokken siger om x-api-key.
Øvelse B

Ny SPA-klient

Kræver API-nøgle. Brug et unikt client_id (fx elevens initialer + dato).

Opret en offentlig OAuth-klient med RequirePkce=true til min SPA.
client_id: workshop-XXXX, navn: Workshop XXXX.
Tilføj redirect URI https://localhost:5173/callback
Vis mig derefter klienten med auth_get_client.
Øvelse C

Wire integrationen

Kombinér MCP med AI-prompt / PKCE fra docs.

Jeg har client_id workshop-XXXX. Hent manifestet, og generér en minimal
Vite/React PKCE-login mod Mercantec Auth med den præcise redirect_uri.
Lærermål: Eleverne skal kunne forklare forskellen mellem “AI skriver kode” (prompt) og “AI kalder platformen” (MCP) — og hvorfor API-nøglen er root-adgang.

6. Opsætning i Cursor

  1. Klon auth-repoet og byg: cd mcp && npm install && npm run build
  2. Sæt samme hemmelighed i Dokploy (Mcp__ApiKey) og lokalt (AUTH_MCP_API_KEY).
  3. Tilføj serveren i ~/.cursor/mcp.json:

    

Admin-UI på Auth: /Admin/Mcp (kræver Admin-rolle) — status for nøgle + samme fortælling.

7. Sikkerhed — klasseværelsesregler

Gør ikke
  • Commit API-nøglen til git
  • Del nøglen i elev-chats / Discord
  • Lad AI slette brugere “for sjov”
Gør
  • Behandl nøglen som root
  • Brug workshop-præfiks på client_id
  • Ryd midlertidige klienter efter timen
Husk: JWT med rolle Admin og MCP-nøglen er to veje til samme admin-API. SPA’en her bruger typisk Bearer-JWT til brugere; Cursor bruger x-api-key.

8. Prøv live (discovery)

Live

Health + MCP-blok fra manifestet

Kalder den rigtige Auth-base fra shared-config.js — ingen API-nøgle.

Vil du forstå OAuth først? Start i docs. Vil du have AI til at skrive integrationskode? Brug AI-prompt.

Demo ved MAGS (underviser) — ikke Mercantecs officielle produkt. [email protected]