Tmavý režim
Zitadel (/zitadel)
Endpointy pro integraci se Zitadel OIDC providerem — webhooky, OIDC login flow a správu organizací.
Webhooky
POST /zitadel/webhook — Zitadel Action webhook
Přijímá webhooky od Zitadelu při událostech uživatele. Autentizace pomocí X-Webhook-Secret headeru.
http
POST /api/zitadel/webhook
X-Webhook-Secret: <webhook-secret>
Content-Type: application/jsonPodporované události
| Událost | Akce |
|---|---|
user.created | Vytvoří uživatele v DB (pokud neexistuje) |
user.deactivated | Nastaví active = false |
user.reactivated | Nastaví active = true |
user.removed | Smaže uživatele z DB |
Request body (od Zitadelu)
json
{
"event": "user.created",
"data": {
"email": "novy.uzivatel@firma.cz",
"firstName": "Jan",
"lastName": "Novák"
}
}Konfigurace v Zitadelu
V Zitadelu nakonfigurujte Action:
- Přejděte do Actions → Flows → External Authentication
- Přidejte Action pro každou událost
- Nastavte Target URL:
https://api.atrea.eu/api/zitadel/webhook - Nastavte
X-Webhook-Secretna hodnotu zconfig.zitadel.webhookSecret
Health & Discovery
GET /zitadel/health
Ověří dostupnost Zitadel instance.
http
GET /api/zitadel/healthResponse
json
{
"success": true,
"data": {
"zitadelUrl": "https://admin.kagb.cloud",
"status": "ok"
}
}GET /zitadel/discovery
Vrátí OIDC discovery dokument ze Zitadelu.
http
GET /api/zitadel/discoveryOIDC Login Flow (PKCE)
Plný OIDC Authorization Code Flow s PKCE pro bezpečné přihlášení.
GET /zitadel/login — start login
Přesměruje uživatele na Zitadel login stránku.
http
GET /api/zitadel/login?client_id=portal-app| Parametr | Povinné | Popis |
|---|---|---|
client_id | ✓ | OIDC client ID aplikace v Zitadelu |
Odpověď: 302 Redirect na Zitadel login stránku s PKCE parametry.
GET /zitadel/callback — OIDC callback
Zpracuje callback od Zitadelu, vymění auth code za token.
http
GET /api/zitadel/callback?code=<authCode>&state=<state>Po úspěšné výměně přesměruje na frontend s tokenem.
Login flow — diagram
Uživatel klikne "Přihlásit"
│
▼
GET /api/zitadel/login?client_id=portal-app
│
├─ Generuje PKCE (code_verifier + code_challenge)
├─ Uloží state + verifier do session
└─ Redirect → Zitadel login stránka
│
▼
Uživatel se přihlásí
│
▼
GET /api/zitadel/callback?code=xyz&state=abc
│
├─ Ověří state (CSRF ochrana)
├─ Vymění code za access_token (PKCE verifier)
└─ Redirect na frontend s tokenemSpráva organizací (SuperAdmin)
Viz Admin endpointy pro detaily.
Stručný přehled:
http
# Seznam organizací
GET /api/zitadel/admin/orgs
# Vytvoření organizace
POST /api/zitadel/admin/orgs
{ "name": "Firma s.r.o.", "domain": "firma.cz" }
# Nastavení brandingu
PUT /api/zitadel/admin/orgs/:orgId/branding
{ "primaryColor": "#E91E63", "logoUrl": "..." }
# Kompletní setup (projekt + OIDC app)
POST /api/zitadel/admin/orgs/:orgId/setup
{
"projectName": "Firma Portal",
"appName": "Portal",
"redirectUris": ["https://portal.firma.cz/callback"],
"userApiAppCode": "firma-portal"
}Konfigurace
V config/default.yaml:
yaml
zitadel:
apiUrl: http://zitadel:8080 # Interní URL (Docker)
publicUrl: http://localhost:8080 # Veřejná URL (pro redirect)
serviceAccountToken: "" # Service account token pro API volání
webhookSecret: "change-me" # Secret pro ověřování webhooků
orgToApp: {} # Mapování orgId → appCodeorgToApp mapování
Mapuje Zitadel organizaci na aplikaci v User API:
yaml
zitadel:
orgToApp:
"org_abc123": "crm"
"org_def456": "vallox-panel"Toto mapování se používá při webhook událostech a Zitadel setup flowu.