Autoryzacja dla maszyn.
Własny serwer OAuth 2.0. Usługa prosi, Handsal podpisuje token dla jednego odbiorcy i token wygasa. Agent czeka, gdy musi zgodzić się człowiek.
- iss
- https://auth.example.com
/t/acme - aud
- https://api.acme.example
/orders - scope
- orders:read
- exp
- 3600 sekund
- sub
- app_k7mn2p4qr5s6tvwx2abc
- alg
- ES256
- kid
- k_2026-11-07_c4e1
Po co to jest.
billing / orders
Usługa woła inną.
Rozliczenia potrzebują orders:read i niczego więcej. Token nazywa API zamówień. Token wystawiony dla magazynu jest odrzucany.
agent / refunds
Agent czeka na człowieka.
Agent potwierdza się kluczem prywatnym, więc sekret nie leży w prompcie. Odczyt może przejść od razu. Zwrot czeka na człowieka, a token żyje pięć minut.
acme / globex
Każdy zespół ma swój issuer.
Jeden serwer, wielu tenantów. Każdy ma własne klucze, aplikacje i audience. Token jednego tenanta nie przechodzi u drugiego.
Do czego token ma prawo.
Jeden odbiorca
Parametr resource jest wymagany. Token jest wydawany dla jednego API i tylko tych zakresów, które ta aplikacja dostała na tym API.
Klucze zostają u tenanta
Podpis jest ES256. Klucz prywatny jest zaszyfrowany w spoczynku. Serwer zasobów sprawdza podpis w JWKS tego tenanta albo pyta o introspekcję.
Możesz go unieważnić
Unieważniasz jeden token albo wszystkie tokeny aplikacji lub tenanta. Introspekcja widzi to od razu. Serwer, który sprawdza tylko podpis, czeka do wygaśnięcia, więc czas życia zostaje krótki. Domyślnie jest to godzina.
Jak przebiega wywołanie.
Jeden kontener. PostgreSQL obok.
Migracje ruszają przy starcie procesu. Panel administratora jest pod tym samym adresem. TLS kończysz w proxy i ustawiasz publiczny adres na https.
docker compose -f docker-compose.prod.yml up -dSerwer nasłuchuje na porcie 3000.