SSO-authenticatie
Configureer Single Sign-On voor zelf gehoste rtCloud met behulp van ingebedde Keycloak, een externe OIDC-provider of Azure Active Directory.
rtCloud ondersteunt drie benaderingen voor Single Sign-On (SSO):
| Optie | Meest geschikt voor |
|---|---|
| Ingebedde Keycloak | Organisaties die een volledig op zichzelf staande SSO-server gebundeld met rtCloud willen |
| Externe OIDC-provider | Organisaties die al een identiteitsprovider gebruiken (Auth0, Authentik, Okta, Supabase, enz.) |
| Azure Active Directory | Organisaties die Microsoft 365 of Azure AD gebruiken |
Zonder geconfigureerde SSO loggen gebruikers in met lokale rtCloud-accounts die worden beheerd via het beheerderspaneel.
Ingebedde Keycloak
De implementatie bevat een optionele Keycloak-container die naast rtCloud wordt uitgevoerd. Keycloak is vooraf geconfigureerd met een rtSurvey-realm en klaar voor gebruik.
Vereisten
- Een domeinnaam met HTTPS (Keycloak vereist HTTPS in productie)
- Minimaal 4 GB RAM op de server (Keycloak voegt ~512 MB geheugengebruik toe)
Installatie
1. Omgevingsvariabelen configureren in .env:
# Schakel de ingebedde Keycloak-container in
EMBED_KEYCLOAK=true
# Keycloak URL's — gebruik uw werkelijke domein
KEYCLOAK_URL=https://rtcloud.example.com/auth
KC_HOSTNAME=https://rtcloud.example.com/auth
KC_HOSTNAME_STRICT=false
# Realm- en clientinstellingen (overeenkomend met de geïmporteerde realm JSON)
KEYCLOAK_REALM=rtsurvey
KEYCLOAK_CLIENT_ID=rtsurvey-app
KEYCLOAK_CLIENT_SECRET=uw-clientgeheim-hier
# Keycloak-beheergegevens
KEYCLOAK_ADMIN_USER=admin
KEYCLOAK_ADMIN_PASSWORD=wijzig_mij_keycloak_beheerderswachtwoord
# Keycloak-database (automatisch aangemaakt)
KEYCLOAK_DB=keycloak
KEYCLOAK_DB_USER=keycloak
KEYCLOAK_DB_PASSWORD=wijzig_mij_keycloak_db_wachtwoord
# Poort waarop Keycloak luistert (hostzijde, via Nginx geproxied)
KEYCLOAK_PORT=8091
2. Starten met het ingebedde Keycloak-profiel:
docker compose -f docker-compose.production.yml --profile embed-keycloak up -d
3. Verifieer of Keycloak gezond is:
docker compose -f docker-compose.production.yml ps
De rtcloud-keycloak-container moet na 2–3 minuten Up (healthy) tonen.
4. Toegang tot de Keycloak-beheerconsole:
https://rtcloud.example.com/auth/admin
Log in met KEYCLOAK_ADMIN_USER en KEYCLOAK_ADMIN_PASSWORD.
Wat vooraf is geconfigureerd
De ingebedde Keycloak start met een vooraf geïmporteerde rtsurvey-realm die het volgende bevat:
- Clientconfiguratie voor de webapplicatie
- Standaard gebruikersrollen (
admin,project_manager,enumerator,analyst) - Sessie- en tokeninstellingen geoptimaliseerd voor rtSurvey
U kunt gebruikers rechtstreeks toevoegen in de Keycloak-beheerconsole of Keycloak verbinden met een upstream-identiteitsprovider (LDAP, SAML).
Nginx-routing
Bij gebruik van de cloudimplementatiescripts wordt Nginx geconfigureerd om beide services te proxien:
| Pad | Backend |
|---|---|
/ | rtCloud-app op 127.0.0.1:8080 |
/auth/ | Keycloak op 127.0.0.1:8090 |
Externe OIDC-provider
Verbind rtCloud met een OpenID Connect-compatibele identiteitsprovider. Deze aanpak vereist de Keycloak-container niet.
Ondersteunde providers
Elke OIDC-conforme provider werkt, inclusief:
- Authentik
- Auth0
- Okta
- Keycloak (externe instantie)
- Supabase
- Google (voor Google Workspace-organisaties)
- GitHub (via OAuth-apps met OIDC-extensie)
Installatie
1. Registreer rtCloud als OIDC-client bij uw identiteitsprovider.
U heeft nodig:
- Een client-ID en clientgeheim
- Registreer de redirect-URI:
https://rtcloud.example.com/auth/callback - Voor ondersteuning van de mobiele app, registreer ook:
vn.rta.rtsurvey.auth://callback
2. Omgevingsvariabelen configureren in .env:
# OIDC-ontdekking-URL (providerspecifiek — raadpleeg uw IdP-documentatie)
OIDC_ISSUER_URL=https://uw-identiteitsprovider.com
# Clientgegevens van uw identiteitsprovider
OIDC_CLIENT_ID=rtcloud-app
OIDC_CLIENT_SECRET=uw-clientgeheim-hier
# Te verzoeken scopes (openid, profile en email zijn doorgaans voldoende)
OIDC_SCOPE=openid profile email
# Redirect-URI geregistreerd bij uw identiteitsprovider
OIDC_REDIRECT_URI=https://rtcloud.example.com/auth/callback
# Optioneel: afzonderlijke mobiele app-client
OIDC_MOBILE_CLIENT_ID=rtcloud-mobile
OIDC_MOBILE_REDIRECT_URI=vn.rta.rtsurvey.auth://callback
# Stel in op true om automatisch rtCloud-accounts aan te maken voor nieuwe OIDC-gebruikers
OPEN_REGISTRATION=false
3. Herstart de app-container om de wijzigingen toe te passen:
docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
Automatisch gebruikers aanmaken
Wanneer OPEN_REGISTRATION=true is, maakt rtCloud automatisch een lokaal account aan de eerste keer dat een gebruiker inlogt via OIDC. Het account wordt gevuld met de naam en het e-mailadres van de gebruiker uit het ID-token.
Wanneer OPEN_REGISTRATION=false (standaard), moet een rtCloud-beheerder eerst het gebruikersaccount aanmaken, en de OIDC-identiteit wordt gekoppeld bij de eerste login.
Aangepaste eindpunten
Als uw provider OIDC-ontdekking (.well-known/openid-configuration) niet ondersteunt, kunt u eindpunten handmatig instellen:
OIDC_AUTHORIZATION_ENDPOINT=https://uw-provider.com/oauth2/authorize
OIDC_TOKEN_ENDPOINT=https://uw-provider.com/oauth2/token
OIDC_USERINFO_ENDPOINT=https://uw-provider.com/oauth2/userinfo
Azure Active Directory
Integreer rtCloud met de Microsoft Azure AD-tenant van uw organisatie.
Installatie
1. Registreer een nieuwe app in de Azure Portal:
- Ga naar Azure Active Directory → App-registraties → Nieuwe registratie
- Naam:
rtCloud - Redirect-URI:
https://rtcloud.example.com/auth/callback(webtype) - Noteer na aanmaak de Applicatie (client) ID en Directory (tenant) ID
- Maak onder Certificaten & geheimen een nieuw clientgeheim aan
2. Omgevingsvariabelen configureren in .env:
AZURE_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_TENANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
3. Herstart de app-container:
docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
Gebruikers in uw Azure AD-tenant kunnen nu inloggen op rtCloud met hun Microsoft-gegevens.
SSO uitschakelen
Om terug te keren naar lokale authenticatie, verwijdert of commentariseert u alle SSO-gerelateerde variabelen uit .env en herstart dan de app-container:
docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
Als u ingebedde Keycloak gebruikte, stop het dan door de --profile embed-keycloak-vlag weg te laten en docker compose down uit te voeren gevolgd door up -d zonder het profiel.