Uwierzytelnianie

Dwa poświadczenia — klucz API dla maszyn, sesja dla konsoli — oraz reguły, które je rozdzielają.

Dwa rodzaje poświadczeń

API przyjmuje klucz API. Konsola przyjmuje ciasteczko sesyjne. Nie są wymienne, a API to wymusza, zamiast decydować przy każdym żądaniu, czy ciasteczko miało się tam znaleźć.

Zalogowana przeglądarka nie może wywołać API

Żądanie uwierzytelnione ciasteczkiem sesyjnym otrzymuje 403 api_key_required, z komunikatem wskazującym stronę kluczy w konsoli. To celowe: skoro nie ma ścieżki do API uwierzytelnianej ciasteczkiem, żądanie cross-site nie ma czego podrobić.

Nagłówek

Wyślij klucz jako token bearer. Klucz to prefiks, kropka i sekret; prefiks identyfikuje wiersz, więc unieważnienie jest natychmiastowe i kosztuje jedno wyszukanie.

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"}]}'

Zakresy

Klucz niesie jeden lub więcej zakresów. Żądanie, którego klucz nie ma zakresu wymaganego przez endpoint, jest odrzucane z 403 insufficient_scope, zanim treść żądania zostanie przeanalizowana.

Zakres Odblokowuje
inference Uzupełnienia czatu, osadzenia oraz endpointy listy i szczegółów modeli.
platform_read Odczyt Twojej organizacji: profil, klucze, użycie, ślady i polityki.
platform_write Tworzenie i unieważnianie kluczy oraz tworzenie i edycja polityk. To zakres, który zmienia, kto może co robić, więc nadawaj go świadomie.

Zakresy są sprawdzane dla każdego endpointu, nie dla każdego klucza. Klucz z platform_read nie może wydawać środków przez playground.

Tworzenie klucza

W konsoli albo przez API platformy z kluczem, który już ma platform_write. Sekret jest pokazywany raz, przy tworzeniu: przechowywany jest tylko hash scrypt, więc nikt — łącznie z nami — nie może go odczytać.

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"]}'

Czynności administracyjne w konsoli — polityki, zespół, ustawienia, środki, unieważnianie kluczy — są tylko dla właściciela lub administratora, niezależnie od zakresów, jakie ma klucz.

Unieważnianie i czym klucz nie jest

Klucz należy do organizacji, a organizacja jest ustalana na podstawie samego klucza — nigdy na podstawie pola w treści żądania, więc wywołujący nie może zaadresować innego tenanta, prosząc uprzejmie. Unieważnienie działa przy następnym żądaniu. Rotacja oznacza utworzenie drugiego klucza, przeniesienie ruchu, a następnie unieważnienie pierwszego; nie ma okna nakładania się do skonfigurowania.

Zamiast tego dla konsoli

Logowanie, odzyskiwanie hasła i weryfikacja adresu są opisane wraz z konsolą. Nie ma OAuth, SAML ani osobistego tokena dostępu: konsola używa ciasteczka sesyjnego, API używa kluczy.