Autentikasi SSO
Konfigurasikan Single Sign-On untuk rtCloud yang di-hosting sendiri menggunakan Keycloak tertanam, penyedia OIDC eksternal, atau Azure Active Directory.
rtCloud mendukung tiga pendekatan untuk Single Sign-On (SSO):
| Opsi | Terbaik Untuk |
|---|---|
| Keycloak Tertanam | Organisasi yang menginginkan server SSO yang sepenuhnya mandiri yang dibundel dengan rtCloud |
| Penyedia OIDC Eksternal | Organisasi yang sudah menjalankan penyedia identitas (Auth0, Authentik, Okta, Supabase, dll.) |
| Azure Active Directory | Organisasi 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:
| Path | Backend |
|---|---|
/ | 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 Directory → App registrations → New 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.