Skip to content

Autentizace — přehled

Atrea User API používá Zitadel jako primární JWT provider pro autentizaci klientů (s Amotion jako alternativním auth serverem) a interní API klíč pro service-to-service komunikaci.

Jak to funguje

Každý chráněný endpoint vyžaduje platný JWT Bearer token:

http
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...

Při příchodu requestu:

  1. JWTService načte veřejné klíče od všech nakonfigurovaných providerů (JWKS)
  2. Vyzkouší verifikaci tokenu každým providerem, dokud jeden neuspěje
  3. Extrahuje email uživatele z JWT claims
  4. Nastaví req.token s daty z tokenu

Podporovaní provideři

ProviderTypPrimární použití
ZitadelSelf-hosted OIDCHlavní provider pro všechny Atrea aplikace
AmotionOAuth2/OIDCAlternativní auth server

Google / Microsoft účty

Login přes Google nebo Microsoft není samostatný JWT provider — uživatelé se přihlašují přes Zitadel, který má Google a Microsoft nakonfigurované jako federované identity providery (IdP). Token, který API přijímá, je vždy Zitadel JWT.

Viz JWT Provideři pro detailní konfiguraci.

Pro volbu brandu bez omezení organizace přihlašovaného účtu viz Multi-brand přihlášení napříč organizacemi.

Typy autentizace

1. JWT Bearer Token (frontend / uživatelé)

Pro endpointy profile, users, applications, roles, permissions:

bash
curl /api/profile/me \
  -H "Authorization: Bearer <token>"

2. Interní API klíč (backend / service-to-service)

Pro endpointy /api/check a /api/internal/*:

bash
curl -X POST /api/check \
  -H "x-internal-api-key: <api-key>" \
  -H "Content-Type: application/json" \
  -d '{"email": "...", "app": "...", "permission": "..."}'

Hodnota klíče: config.internalApiKey (viz Konfigurace).

3. Webhook secret (Zitadel)

Pro Zitadel webhooky:

bash
POST /api/zitadel/webhook
X-Webhook-Secret: <webhook-secret>

Email jako identita

Po úspěšné verifikaci JWT je email uživatele extrahován z těchto claims (v pořadí priority):

  1. email
  2. preferred_username
  3. upn (federovaní Microsoft uživatelé)
  4. sub (fallback)

Email pak slouží jako primární identifikátor ve všech operacích.

Refresh klíčů

JWKS klíče se načítají při startu a automaticky refreshují každých 60 minut. Interval je konfigurovatelný přes config.token.keyRefreshIntervalMinutes.

Endpointy bez autentizace

Tyto endpointy nevyžadují žádný token:

EndpointPopis
GET /api/testHealth check
GET /api/versionVerze API
GET /api/docsSwagger UI
GET /docs/Tato dokumentace
POST /api/checkPermission check
POST /api/check/bulkBulk permission check
POST /api/check/effectiveEffective permissions
POST /api/check/cache/clearManuální invalidace cache
POST /api/zitadel/webhookZitadel webhook (x-webhook-secret)
GET /api/zitadel/healthZitadel health probe
GET /api/zitadel/discoveryOIDC discovery dokument
GET /api/zitadel/loginOIDC login start (dev)
GET /api/zitadel/callbackOIDC callback (dev)

Viz také

Atrea User API — interní dokumentace