SSO autentifikacija
Konfigurišite jedinstvenu prijavu za sopstveno hostovani rtCloud koristeći ugrađeni Keycloak, spoljni OIDC pružalac ili Azure Active Directory.
rtCloud podržava tri pristupa za jedinstvenu prijavu (SSO):
| Opcija | Najpogodnije za |
|---|---|
| Ugrađeni Keycloak | Organizacije koje žele potpuno samoobuhvatan SSO server priložen sa rtCloud-om |
| Spoljni OIDC pružalac | Organizacije koje već koriste pružaoca identiteta (Auth0, Authentik, Okta, Supabase, itd.) |
| Azure Active Directory | Organizacije koje koriste Microsoft 365 ili Azure AD |
Bez konfigurisanog SSO sistema, korisnici se prijavljuju lokalnim rtCloud nalozima upravljanim putem administratorskog panela.
Ugrađeni Keycloak
Primena uključuje opcioni Keycloak kontejner koji radi paralelno sa rtCloud-om. Keycloak je unapred konfigurisan sa rtSurvey realmom i spreman za upotrebu.
Zahtevi
- Naziv domena sa HTTPS-om (Keycloak zahteva HTTPS u produkciji)
- Najmanje 4 GB RAM na serveru (Keycloak dodaje ~512 MB potrošnje memorije)
Podešavanje
1. Konfigurišite promenljive okruženja u .env:
# Aktivirajte ugrađeni Keycloak kontejner
EMBED_KEYCLOAK=true
# Keycloak URL-ovi — koristite vaš stvarni domen
KEYCLOAK_URL=https://rtcloud.example.com/auth
KC_HOSTNAME=https://rtcloud.example.com/auth
KC_HOSTNAME_STRICT=false
# Podešavanja realma i klijenta (odgovaraju uvezenom realm JSON-u)
KEYCLOAK_REALM=rtsurvey
KEYCLOAK_CLIENT_ID=rtsurvey-app
KEYCLOAK_CLIENT_SECRET=your-client-secret-here
# Keycloak administratorski akreditivi
KEYCLOAK_ADMIN_USER=admin
KEYCLOAK_ADMIN_PASSWORD=change_me_keycloak_admin_password
# Keycloak baza podataka (automatski se kreira)
KEYCLOAK_DB=keycloak
KEYCLOAK_DB_USER=keycloak
KEYCLOAK_DB_PASSWORD=change_me_keycloak_db_password
# Port na kome Keycloak sluša (na strani hosta, proksirano od strane Nginx-a)
KEYCLOAK_PORT=8091
2. Pokrenite sa ugrađenim Keycloak profilom:
docker compose -f docker-compose.production.yml --profile embed-keycloak up -d
3. Proverite da je Keycloak zdrav:
docker compose -f docker-compose.production.yml ps
Kontejner rtcloud-keycloak treba da prikaže Up (healthy) nakon 2–3 minuta.
4. Pristupite Keycloak administratorskoj konzoli:
https://rtcloud.example.com/auth/admin
Prijavite se sa KEYCLOAK_ADMIN_USER i KEYCLOAK_ADMIN_PASSWORD.
Šta je unapred konfigurisano
Ugrađeni Keycloak počinje sa unapred uvezenim realmom rtsurvey koji uključuje:
- Konfiguraciju klijenta za veb aplikaciju
- Podrazumevane korisničke uloge (
admin,project_manager,enumerator,analyst) - Podešavanja sesija i tokena optimizovana za rtSurvey
Možete dodavati korisnike direktno u Keycloak administratorskoj konzoli ili povezati Keycloak sa upstream pružaocem identiteta (LDAP, SAML).
Nginx rutiranje
Kada koristite skripte za primenu u oblaku, Nginx je konfigurisan da proksira oba servisa:
| Putanja | Pozadinski servis |
|---|---|
/ | rtCloud aplikacija na 127.0.0.1:8080 |
/auth/ | Keycloak na 127.0.0.1:8090 |
Spoljni OIDC pružalac
Povežite rtCloud sa bilo kojim OpenID Connect-kompatibilnim pružaocem identiteta. Ovaj pristup ne zahteva Keycloak kontejner.
Podržani pružaoci
Svaki OIDC-usklađeni pružalac funkcioniše, uključujući:
- Authentik
- Auth0
- Okta
- Keycloak (eksterna instanca)
- Supabase
- Google (za Google Workspace organizacije)
- GitHub (putem OAuth aplikacija sa OIDC ekstenzijom)
Podešavanje
1. Registrujte rtCloud kao OIDC klijenta kod vašeg pružaoca identiteta.
Biće vam potrebni:
- ID klijenta i tajna klijenta
- Registracija URI za preusmeravanje:
https://rtcloud.example.com/auth/callback - Za podršku mobilne aplikacije, takođe registrujte:
vn.rta.rtsurvey.auth://callback
2. Konfigurišite promenljive okruženja u .env:
# OIDC URL za otkrivanje (specifičan za pružaoca — proverite dokumentaciju vašeg IdP-a)
OIDC_ISSUER_URL=https://your-identity-provider.com
# Akreditivi klijenta od vašeg pružaoca identiteta
OIDC_CLIENT_ID=rtcloud-app
OIDC_CLIENT_SECRET=your-client-secret-here
# Opsezi za zahtevanje (openid, profile i email su obično dovoljni)
OIDC_SCOPE=openid profile email
# URI za preusmeravanje registrovan kod vašeg pružaoca identiteta
OIDC_REDIRECT_URI=https://rtcloud.example.com/auth/callback
# Opciono: poseban klijent mobilne aplikacije
OIDC_MOBILE_CLIENT_ID=rtcloud-mobile
OIDC_MOBILE_REDIRECT_URI=vn.rta.rtsurvey.auth://callback
# Postavite na true da automatski kreirate rtCloud naloge za nove OIDC korisnike
OPEN_REGISTRATION=false
3. Ponovo pokrenite kontejner aplikacije da primenite izmene:
docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
Automatsko obezbeđivanje korisnika
Kada je OPEN_REGISTRATION=true, rtCloud automatski kreira lokalni nalog prvi put kada se korisnik prijavi putem OIDC-a. Nalog se popunjava imenom i email adresom korisnika iz ID tokena.
Kada je OPEN_REGISTRATION=false (podrazumevano), rtCloud administrator mora najpre kreirati korisnički nalog, a OIDC identitet se povezuje pri prvoj prijavi.
Prilagođene krajnje tačke
Ako vaš pružalac ne podržava OIDC otkrivanje (.well-known/openid-configuration), možete ručno postaviti krajnje tačke:
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
Integrirajte rtCloud sa Azure AD zakupcem vaše organizacije.
Podešavanje
1. Registrujte novu aplikaciju na Azure portalu:
- Idite na Azure Active Directory → Registracije aplikacija → Nova registracija
- Ime:
rtCloud - URI za preusmeravanje:
https://rtcloud.example.com/auth/callback(Veb tip) - Nakon kreiranja, zabeležite ID aplikacije (klijenta) i ID direktorijuma (zakupca)
- Pod Sertifikati i tajne, kreirajte novu tajnu klijenta
2. Konfigurišite promenljive okruženja u .env:
AZURE_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_TENANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
3. Ponovo pokrenite kontejner aplikacije:
docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
Korisnici u vašem Azure AD zakupcu sada se mogu prijaviti na rtCloud koristeći Microsoft akreditive.
Deaktiviranje SSO sistema
Da biste se vratili na lokalnu autentifikaciju, uklonite ili zakomentarišite sve SSO-vezane promenljive iz .env, zatim ponovo pokrenite kontejner aplikacije:
docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
Ako ste koristili ugrađeni Keycloak, zaustavite ga izostavljanjem oznake --profile embed-keycloak i pokretanjem docker compose down praćenog sa up -d bez profila.