SSO autentizace
Konfigurace jednotného přihlášení pro vlastní rtCloud pomocí vloženého Keycloak, externího OIDC poskytovatele nebo Azure Active Directory.
rtCloud podporuje tři přístupy k jednotnému přihlášení (SSO):
| Možnost | Nejlepší pro |
|---|---|
| Vložený Keycloak | Organizace, které chtějí plně samostatný SSO server přibalený s rtCloud |
| Externí OIDC poskytovatel | Organizace, které již provozují poskytovatele identit (Auth0, Authentik, Okta, Supabase atd.) |
| Azure Active Directory | Organizace používající Microsoft 365 nebo Azure AD |
Bez nakonfigurovaného SSO se uživatelé přihlašují pomocí lokálních rtCloud účtů spravovaných přes administrátorský panel.
Vložený Keycloak
Nasazení zahrnuje volitelný kontejner Keycloak, který běží vedle rtCloud. Keycloak je předkonfigurován s rtSurvey realm a připraven k použití.
Požadavky
- Název domény s HTTPS (Keycloak vyžaduje HTTPS v produkci)
- Alespoň 4 GB RAM na serveru (Keycloak přidává ~512 MB využití paměti)
Nastavení
1. Nakonfigurujte proměnné prostředí v .env:
# Povolení vloženého kontejneru Keycloak
EMBED_KEYCLOAK=true
# URL Keycloak — použijte svou skutečnou doménu
KEYCLOAK_URL=https://rtcloud.example.com/auth
KC_HOSTNAME=https://rtcloud.example.com/auth
KC_HOSTNAME_STRICT=false
# Nastavení realm a klienta (odpovídají importovanému realm JSON)
KEYCLOAK_REALM=rtsurvey
KEYCLOAK_CLIENT_ID=rtsurvey-app
KEYCLOAK_CLIENT_SECRET=your-client-secret-here
# Přihlašovací údaje administrátora Keycloak
KEYCLOAK_ADMIN_USER=admin
KEYCLOAK_ADMIN_PASSWORD=change_me_keycloak_admin_password
# Databáze Keycloak (vytvoří se automaticky)
KEYCLOAK_DB=keycloak
KEYCLOAK_DB_USER=keycloak
KEYCLOAK_DB_PASSWORD=change_me_keycloak_db_password
# Port, na kterém Keycloak naslouchá (na straně hostitele, proxováno Nginx)
KEYCLOAK_PORT=8091
2. Spuštění s profilem vloženého Keycloak:
docker compose -f docker-compose.production.yml --profile embed-keycloak up -d
3. Ověřte, že Keycloak je zdravý:
docker compose -f docker-compose.production.yml ps
Kontejner rtcloud-keycloak by měl po 2–3 minutách zobrazovat Up (healthy).
4. Přístup do administrátorské konzole Keycloak:
https://rtcloud.example.com/auth/admin
Přihlaste se pomocí KEYCLOAK_ADMIN_USER a KEYCLOAK_ADMIN_PASSWORD.
Co je předkonfigurováno
Vložený Keycloak startuje s předimportovaným realm rtsurvey, který zahrnuje:
- Konfiguraci klienta pro webovou aplikaci
- Výchozí uživatelské role (
admin,project_manager,enumerator,analyst) - Nastavení relace a tokenů optimalizované pro rtSurvey
Uživatele můžete přidávat přímo v administrátorské konzoli Keycloak nebo připojit Keycloak k upstream poskytovateli identit (LDAP, SAML).
Směrování Nginx
Při použití cloudových skriptů nasazení je Nginx nakonfigurován pro proxy obou služeb:
| Cesta | Backend |
|---|---|
/ | Aplikace rtCloud na 127.0.0.1:8080 |
/auth/ | Keycloak na 127.0.0.1:8090 |
Externí OIDC poskytovatel
Připojte rtCloud k libovolnému poskytovateli identit kompatibilnímu s OpenID Connect. Tento přístup nevyžaduje kontejner Keycloak.
Podporovaní poskytovatelé
Funguje jakýkoliv poskytovatel kompatibilní s OIDC, včetně:
- Authentik
- Auth0
- Okta
- Keycloak (externí instance)
- Supabase
- Google (pro organizace používající Google Workspace)
- GitHub (přes OAuth apps s rozšířením OIDC)
Nastavení
1. Zaregistrujte rtCloud jako OIDC klienta u vašeho poskytovatele identit.
Budete potřebovat:
- ID klienta a tajný klíč klienta
- Zaregistrovat redirect URI:
https://rtcloud.example.com/auth/callback - Pro podporu mobilní aplikace zaregistrujte také:
vn.rta.rtsurvey.auth://callback
2. Nakonfigurujte proměnné prostředí v .env:
# URL pro discovery OIDC (specifické pro poskytovatele — zkontrolujte dokumentaci)
OIDC_ISSUER_URL=https://your-identity-provider.com
# Přihlašovací údaje klienta od vašeho poskytovatele identit
OIDC_CLIENT_ID=rtcloud-app
OIDC_CLIENT_SECRET=your-client-secret-here
# Rozsahy k požadování (openid, profile a email jsou obvykle dostatečné)
OIDC_SCOPE=openid profile email
# Redirect URI zaregistrovaná u vašeho poskytovatele identit
OIDC_REDIRECT_URI=https://rtcloud.example.com/auth/callback
# Volitelné: samostatný klient mobilní aplikace
OIDC_MOBILE_CLIENT_ID=rtcloud-mobile
OIDC_MOBILE_REDIRECT_URI=vn.rta.rtsurvey.auth://callback
# Nastavte true pro automatické vytvoření rtCloud účtů pro nové OIDC uživatele
OPEN_REGISTRATION=false
3. Restartujte kontejner aplikace pro aplikování změn:
docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
Automatické provisionování uživatelů
Pokud je OPEN_REGISTRATION=true, rtCloud automaticky vytvoří lokální účet poprvé, když se uživatel přihlásí přes OIDC. Účet je naplněn jménem a e-mailem uživatele z ID tokenu.
Pokud je OPEN_REGISTRATION=false (výchozí), administrátor rtCloud musí nejprve vytvořit uživatelský účet a identita OIDC je propojena při prvním přihlášení.
Vlastní endpointy
Pokud váš poskytovatel nepodporuje OIDC discovery (.well-known/openid-configuration), můžete nastavit endpointy ručně:
OIDC_AUTHORIZATION_ENDPOINT=https://your-provider.com/oauth2/authorize
OIDC_TOKEN_ENDPOINT=https://your-provider.com/oauth2/token
OIDC_USERINFO_ENDPOINT=https://your-provider.com/oauth2/userinfo
Azure Active Directory
Integrujte rtCloud s Microsoft Azure AD tenantem vaší organizace.
Nastavení
1. Zaregistrujte novou aplikaci na Azure Portal:
- Přejděte na Azure Active Directory → Registrace aplikací → Nová registrace
- Název:
rtCloud - Redirect URI:
https://rtcloud.example.com/auth/callback(typ Web) - Po vytvoření si poznamenejte ID aplikace (klienta) a ID adresáře (tenanta)
- Pod Certifikáty a tajné kódy vytvořte nový tajný klíč klienta
2. Nakonfigurujte proměnné prostředí v .env:
AZURE_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_TENANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
3. Restartujte kontejner aplikace:
docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
Uživatelé ve vašem Azure AD tenantovi se nyní mohou přihlásit do rtCloud pomocí svých Microsoft přihlašovacích údajů.
Deaktivace SSO
Pro návrat k lokální autentizaci odeberte nebo zakomentujte všechny SSO proměnné z .env, poté restartujte kontejner aplikace:
docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
Pokud jste používali vložený Keycloak, zastavte ho vynecháním příznaku --profile embed-keycloak a spusťte docker compose down následované up -d bez profilu.