Autentificering

To legitimationsoplysninger — en API-nøgle til maskiner, en session til konsollen — og reglerne, der holder dem adskilt.

To typer legitimationsoplysninger

API'en tager en API-nøgle. Konsollen tager en session-cookie. De kan ikke bruges i flæng, og API'en håndhæver det i stedet for at afgøre fra anmodning til anmodning, om en cookie var ment at være der.

En browser, der er logget ind, kan ikke kalde API'en

En anmodning, der er autentificeret med en session-cookie, får 403 api_key_required, med en meddelelse der peger på konsollens nøgleside. Dette er bevidst: uden en cookie-autentificeret vej ind i API'en er der intet for en cross-site-anmodning at forfalske.

Headeren

Send nøglen som et bearer-token. En nøgle er et præfiks, et punktum og en hemmelighed; præfikset identificerer rækken, så tilbagekaldelse er øjeblikkelig og koster ét opslag.

curl https://api.llmeu.com/v1/chat/completions \
  -H "Authorization: Bearer llmeu_live_xxxxxxxx.your-secret" \
  -H "Content-Type: application/json" \
  -d '{"model":"llmeu-auto","messages":[{"role":"user","content":"Hello"}]}'

Scopes

En nøgle bærer et eller flere scopes. En anmodning, hvis nøgle mangler det scope, et endpoint kræver, afvises med 403 insufficient_scope, før bodyen parses.

Scope Giver adgang til
inference Chat completions, embeddings og endpointene til modelliste og modeldetaljer.
platform_read Læs din organisation: profil, nøgler, forbrug, traces og politikker.
platform_write Opret og tilbagekald nøgler, og opret eller rediger politikker. Dette er scopet, der ændrer, hvem der må gøre hvad, så udsted det med omtanke.

Scopes kontrolleres pr. endpoint, ikke pr. nøgle. En nøgle med platform_read kan ikke bruge kredit gennem playground.

Oprettelse af en nøgle

I konsollen, eller via platform-API'en med en nøgle, der allerede bærer platform_write. Hemmeligheden vises én gang, når den oprettes: der gemmes kun en scrypt-hash, så ingen — heller ikke vi — kan læse den tilbage.

curl -X POST https://api.llmeu.com/platform/v1/api-keys \
  -H "Authorization: Bearer llmeu_live_xxxxxxxx.a-platform-write-key" \
  -H "Content-Type: application/json" \
  -d '{"name":"ci","scopes":["inference"]}'

Administrative handlinger i konsollen — politikker, team, indstillinger, kredit, tilbagekaldelse af nøgler — er kun for ejer eller admin, uanset hvilke scopes en nøgle bærer.

Tilbagekaldelse, og hvad en nøgle ikke er

En nøgle tilhører en organisation, og organisationen bestemmes ud fra nøglen selv — aldrig ud fra et felt i request-bodyen, så en kalder ikke kan henvende sig til en anden tenant ved at spørge pænt. Tilbagekaldelse træder i kraft ved næste anmodning. Rotation betyder at oprette en ny nøgle, flytte trafik og derefter tilbagekalde den første; der er intet overlap-vindue at konfigurere.

For konsollen i stedet

Log ind, gendannelse af adgangskode og adresseverifikation er dokumenteret sammen med konsollen. Der er ingen OAuth, ingen SAML og ingen personligt adgangstoken: konsollen bruger en session-cookie, API'en bruger nøgler.