rtCloud mendukung tiga pendekatan untuk Single Sign-On (SSO):

OpsiTerbaik Untuk
Keycloak TertanamOrganisasi yang menginginkan server SSO yang sepenuhnya mandiri yang dibundel dengan rtCloud
Penyedia OIDC EksternalOrganisasi yang sudah menjalankan penyedia identitas (Auth0, Authentik, Okta, Supabase, dll.)
Azure Active DirectoryOrganisasi yang menggunakan Microsoft 365 atau Azure AD

Tanpa SSO yang dikonfigurasikan, pengguna masuk dengan akun rtCloud lokal yang dikelola melalui panel admin.


Keycloak Tertanam

Penerapan mencakup container Keycloak opsional yang berjalan bersamaan dengan rtCloud. Keycloak dikonfigurasi sebelumnya dengan realm rtSurvey dan siap digunakan.

Persyaratan

  • Nama domain dengan HTTPS (Keycloak memerlukan HTTPS di produksi)
  • Setidaknya 4 GB RAM di server (Keycloak menambahkan penggunaan memori ~512 MB)

Pengaturan

1. Konfigurasikan variabel lingkungan di .env:

  # Aktifkan container Keycloak tertanam
EMBED_KEYCLOAK=true

# URL Keycloak — gunakan domain Anda yang sebenarnya
KEYCLOAK_URL=https://rtcloud.example.com/auth
KC_HOSTNAME=https://rtcloud.example.com/auth
KC_HOSTNAME_STRICT=false

# Pengaturan realm dan klien (sesuai dengan realm JSON yang diimpor)
KEYCLOAK_REALM=rtsurvey
KEYCLOAK_CLIENT_ID=rtsurvey-app
KEYCLOAK_CLIENT_SECRET=your-client-secret-here

# Kredensial admin Keycloak
KEYCLOAK_ADMIN_USER=admin
KEYCLOAK_ADMIN_PASSWORD=change_me_keycloak_admin_password

# Database Keycloak (dibuat secara otomatis)
KEYCLOAK_DB=keycloak
KEYCLOAK_DB_USER=keycloak
KEYCLOAK_DB_PASSWORD=change_me_keycloak_db_password

# Port yang didengarkan Keycloak (sisi host, di-proxy oleh Nginx)
KEYCLOAK_PORT=8091
  

2. Mulai dengan profil Keycloak tertanam:

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

3. Verifikasi Keycloak sehat:

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

Container rtcloud-keycloak harus menampilkan Up (healthy) setelah 2–3 menit.

4. Akses konsol admin Keycloak:

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

Masuk dengan KEYCLOAK_ADMIN_USER dan KEYCLOAK_ADMIN_PASSWORD.

Yang Dikonfigurasi Sebelumnya

Keycloak tertanam dimulai dengan realm rtsurvey yang telah diimpor sebelumnya yang mencakup:

  • Konfigurasi klien untuk aplikasi web
  • Peran pengguna default (admin, project_manager, enumerator, analyst)
  • Pengaturan sesi dan token yang dioptimalkan untuk rtSurvey

Anda dapat menambahkan pengguna langsung di konsol admin Keycloak atau menghubungkan Keycloak ke penyedia identitas upstream (LDAP, SAML).

Routing Nginx

Saat menggunakan skrip penerapan cloud, Nginx dikonfigurasikan untuk mem-proxy kedua layanan:

PathBackend
/Aplikasi rtCloud di 127.0.0.1:8080
/auth/Keycloak di 127.0.0.1:8090

Penyedia OIDC Eksternal

Hubungkan rtCloud ke penyedia identitas yang kompatibel dengan OpenID Connect. Pendekatan ini tidak memerlukan container Keycloak.

Penyedia yang Didukung

Penyedia yang patuh OIDC apa pun berfungsi, termasuk:

  • Authentik
  • Auth0
  • Okta
  • Keycloak (instans eksternal)
  • Supabase
  • Google (untuk organisasi Google Workspace)
  • GitHub (melalui OAuth apps dengan ekstensi OIDC)

Pengaturan

1. Daftarkan rtCloud sebagai klien OIDC di penyedia identitas Anda.

Anda akan membutuhkan:

  • ID klien dan secret klien
  • Untuk mendaftarkan URI pengalihan: https://rtcloud.example.com/auth/callback
  • Untuk dukungan aplikasi mobile, juga daftarkan: vn.rta.rtsurvey.auth://callback

2. Konfigurasikan variabel lingkungan di .env:

  # URL penemuan OIDC (spesifik penyedia — periksa dokumentasi IdP Anda)
OIDC_ISSUER_URL=https://your-identity-provider.com

# Kredensial klien dari penyedia identitas Anda
OIDC_CLIENT_ID=rtcloud-app
OIDC_CLIENT_SECRET=your-client-secret-here

# Scope yang diminta (openid, profile, dan email biasanya sudah cukup)
OIDC_SCOPE=openid profile email

# URI pengalihan yang terdaftar di penyedia identitas Anda
OIDC_REDIRECT_URI=https://rtcloud.example.com/auth/callback

# Opsional: klien aplikasi mobile terpisah
OIDC_MOBILE_CLIENT_ID=rtcloud-mobile
OIDC_MOBILE_REDIRECT_URI=vn.rta.rtsurvey.auth://callback

# Atur ke true untuk membuat akun rtCloud secara otomatis untuk pengguna OIDC baru
OPEN_REGISTRATION=false
  

3. Restart container aplikasi untuk menerapkan perubahan:

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

Provisi Pengguna Otomatis

Ketika OPEN_REGISTRATION=true, rtCloud secara otomatis membuat akun lokal pertama kali pengguna masuk melalui OIDC. Akun diisi dengan nama dan email pengguna dari token ID.

Ketika OPEN_REGISTRATION=false (default), administrator rtCloud harus membuat akun pengguna terlebih dahulu, dan identitas OIDC ditautkan pada login pertama.

Endpoint Kustom

Jika penyedia Anda tidak mendukung penemuan OIDC (.well-known/openid-configuration), Anda dapat mengatur endpoint secara manual:

  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

Integrasikan rtCloud dengan tenant Microsoft Azure AD organisasi Anda.

Pengaturan

1. Daftarkan aplikasi baru di Azure Portal:

  • Buka Azure Active DirectoryApp registrationsNew registration
  • Nama: rtCloud
  • URI Pengalihan: https://rtcloud.example.com/auth/callback (tipe Web)
  • Setelah pembuatan, catat Application (client) ID dan Directory (tenant) ID
  • Di bawah Certificates & secrets, buat secret klien baru

2. Konfigurasikan variabel lingkungan di .env:

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

3. Restart container aplikasi:

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

Pengguna di tenant Azure AD Anda sekarang dapat masuk ke rtCloud menggunakan kredensial Microsoft mereka.


Menonaktifkan SSO

Untuk kembali ke autentikasi lokal, hapus atau komentari semua variabel terkait SSO dari .env, lalu restart container aplikasi:

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

Jika Anda menggunakan Keycloak tertanam, hentikan dengan menghilangkan flag --profile embed-keycloak dan menjalankan docker compose down diikuti oleh up -d tanpa profil.

Apakah halaman ini membantu?