Skip to content

Autentizace — přehled

Atrea User API podporuje čtyři JWT providery pro autentizaci klientů a používá 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
MicrosoftOAuth2/OIDC (Azure AD)Microsoft účty
GoogleOAuth2/OIDCGoogle účty

Viz JWT Provideři pro detailní konfiguraci.

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 (Microsoft)
  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 (internal API key volitelný)
POST /api/check/bulkBulk permission check
POST /api/check/effectiveEffective permissions
POST /api/zitadel/webhookZitadel webhook (x-webhook-secret)
GET /api/zitadel/loginOIDC login start
GET /api/zitadel/callbackOIDC callback

Viz také

Atrea User API — interní dokumentace