rtCloud støtter tre tilnærminger for Single Sign-On (SSO):

AlternativBest for
Innebygd KeycloakOrganisasjoner som ønsker en fullstendig selvstendig SSO-server medfølgende rtCloud
Ekstern OIDC-leverandørOrganisasjoner som allerede kjører en identitetsleverandør (Auth0, Authentik, Okta, Supabase, osv.)
Azure Active DirectoryOrganisasjoner som bruker Microsoft 365 eller Azure AD

Uten SSO konfigurert logger brukere inn med lokale rtCloud-kontoer administrert via adminpanelet.


Innebygd Keycloak

Distribusjonen inkluderer en valgfri Keycloak-container som kjører ved siden av rtCloud. Keycloak er forhåndskonfigurert med et rtSurvey realm og klar til bruk.

Krav

  • Et domenenavn med HTTPS (Keycloak krever HTTPS i produksjon)
  • Minst 4 GB RAM på serveren (Keycloak legger til ~512 MB minnebruk)

Oppsett

1. Konfigurer miljøvariabler i .env:

  # Aktiver den innebygde Keycloak-containeren
EMBED_KEYCLOAK=true

# Keycloak URL-er — bruk ditt faktiske domene
KEYCLOAK_URL=https://rtcloud.example.com/auth
KC_HOSTNAME=https://rtcloud.example.com/auth
KC_HOSTNAME_STRICT=false

# Realm- og klientinnstillinger (samsvar med importert realm JSON)
KEYCLOAK_REALM=rtsurvey
KEYCLOAK_CLIENT_ID=rtsurvey-app
KEYCLOAK_CLIENT_SECRET=your-client-secret-here

# Keycloak-adminlegitimasjon
KEYCLOAK_ADMIN_USER=admin
KEYCLOAK_ADMIN_PASSWORD=change_me_keycloak_admin_password

# Keycloak-database (opprettes automatisk)
KEYCLOAK_DB=keycloak
KEYCLOAK_DB_USER=keycloak
KEYCLOAK_DB_PASSWORD=change_me_keycloak_db_password

# Port Keycloak lytter på (vertssiden, proxyet av Nginx)
KEYCLOAK_PORT=8091
  

2. Start med den innebygde Keycloak-profilen:

  docker compose -f docker-compose.production.yml --profile embed-keycloak up -d
  

3. Kontroller at Keycloak er sunn:

  docker compose -f docker-compose.production.yml ps
  

rtcloud-keycloak-containeren bør vise Up (healthy) etter 2–3 minutter.

4. Åpne Keycloak admin-konsollen:

  https://rtcloud.example.com/auth/admin
  

Logg inn med KEYCLOAK_ADMIN_USER og KEYCLOAK_ADMIN_PASSWORD.

Hva er forhåndskonfigurert

Den innebygde Keycloak starter med et forhåndsimportert rtsurvey-realm som inkluderer:

  • Klientkonfigurasjon for nettapplikasjonen
  • Standardbrukerroller (admin, project_manager, enumerator, analyst)
  • Økt- og tokeninnstillinger optimalisert for rtSurvey

Du kan legge til brukere direkte i Keycloak admin-konsollen eller koble Keycloak til en oppstrøms identitetsleverandør (LDAP, SAML).

Nginx-ruting

Når du bruker skydistribusjonsskriptene, er Nginx konfigurert til å proxy begge tjenester:

StiBakstjeneste
/rtCloud-app på 127.0.0.1:8080
/auth/Keycloak på 127.0.0.1:8090

Ekstern OIDC-leverandør

Koble rtCloud til en hvilken som helst OpenID Connect-kompatibel identitetsleverandør. Denne tilnærmingen krever ikke Keycloak-containeren.

Støttede leverandører

Enhver OIDC-kompatibel leverandør fungerer, inkludert:

  • Authentik
  • Auth0
  • Okta
  • Keycloak (ekstern instans)
  • Supabase
  • Google (for Google Workspace-organisasjoner)
  • GitHub (via OAuth-apper med OIDC-utvidelse)

Oppsett

1. Registrer rtCloud som en OIDC-klient hos identitetsleverandøren.

Du trenger:

  • En klient-ID og klienthemmelighet
  • Å registrere redirect URI: https://rtcloud.example.com/auth/callback
  • For mobilappstøtte, registrer også: vn.rta.rtsurvey.auth://callback

2. Konfigurer miljøvariabler i .env:

  # OIDC-oppdagelsesadresse (leverandørspesifikk — sjekk IdP-dokumentasjonen)
OIDC_ISSUER_URL=https://your-identity-provider.com

# Klientlegitimasjon fra identitetsleverandøren
OIDC_CLIENT_ID=rtcloud-app
OIDC_CLIENT_SECRET=your-client-secret-here

# Omfang som skal be om (openid, profile og email er vanligvis tilstrekkelig)
OIDC_SCOPE=openid profile email

# Redirect URI registrert hos identitetsleverandøren
OIDC_REDIRECT_URI=https://rtcloud.example.com/auth/callback

# Valgfritt: separat mobilappklient
OIDC_MOBILE_CLIENT_ID=rtcloud-mobile
OIDC_MOBILE_REDIRECT_URI=vn.rta.rtsurvey.auth://callback

# Sett til true for automatisk å opprette rtCloud-kontoer for nye OIDC-brukere
OPEN_REGISTRATION=false
  

3. Start app-containeren på nytt for å bruke endringene:

  docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
  

Automatisk klargjøring av brukere

Når OPEN_REGISTRATION=true, oppretter rtCloud automatisk en lokal konto første gang en bruker logger inn via OIDC. Kontoen fylles med brukerens navn og e-post fra ID-tokenet.

Når OPEN_REGISTRATION=false (standard), må en rtCloud-administrator opprette brukerkontoen først, og OIDC-identiteten kobles ved første innlogging.

Egendefinerte endepunkter

Hvis leverandøren ikke støtter OIDC-oppdagelse (.well-known/openid-configuration), kan du angi endepunkter manuelt:

  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

Integrer rtCloud med organisasjonens Microsoft Azure AD-leietaker.

Oppsett

1. Registrer en ny app i Azure Portal:

  • Gå til Azure Active DirectoryApp-registreringerNy registrering
  • Navn: rtCloud
  • Redirect URI: https://rtcloud.example.com/auth/callback (Netttype)
  • Etter opprettelse, noter Applikasjons-(klient-)ID og Katalog-(leietaker-)ID
  • Under Sertifikater og hemmeligheter, opprett en ny klienthemmelighet

2. Konfigurer miljøvariabler i .env:

  AZURE_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_TENANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  

3. Start app-containeren på nytt:

  docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
  

Brukere i Azure AD-leietakeren kan nå logge inn på rtCloud med Microsoft-legitimasjonen sin.


Deaktivere SSO

For å gå tilbake til lokal autentisering, fjern eller kommenter ut alle SSO-relaterte variabler fra .env, og start deretter app-containeren på nytt:

  docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
  

Hvis du brukte innebygd Keycloak, stopp den ved å utelate --profile embed-keycloak-flagget og kjøre docker compose down etterfulgt av up -d uten profilen.

Var denne siden nyttig?