Autentificering

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

To slags legitimationsoplysninger

API'en tager en API-nøgle. Konsollen tager en sessionscookie. De kan ikke udskiftes, og API'en håndhæver det i stedet for at afgøre anmodning for 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 sessionscookie, får 403 api_key_required med en meddelelse, der peger på konsollens nøgleside. Det er med vilje: Når der ikke er nogen cookie-autentificeret vej ind i API'en, er der intet for en anmodning på tværs af websteder 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, som et endpoint kræver, afvises med 403 insufficient_scope, før kroppen parses.

Scope Åbner
inference Chat completions, embeddings samt endpointene til modelliste og modeldetaljer.
platform_read Læs din organisation: profil, nøgler, forbrug, spor og politikker.
platform_write Opret og tilbagekald nøgler, og opret eller redigér politikker. Dette er det scope, 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 legepladsen.

Oprettelse af en nøgle

I konsollen eller via platformens API med en nøgle, der allerede har 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 har.

Tilbagekaldelse, og hvad en nøgle ikke er

En nøgle tilhører en organisation, og organisationen findes ud fra nøglen selv — aldrig fra et felt i anmodningens krop, så en kalder kan ikke 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 ingen overlapningsperiode at konfigurere.

Til konsollen i stedet

Log ind, gendannelse af adgangskode og adressebekræftelse er dokumenteret sammen med konsollen. Der er ingen OAuth, ingen SAML og ingen personlig adgangstoken: Konsollen bruger en sessionscookie, API'en bruger nøgler.