Skip to content

Pengenalan DUMEG Identity ​

DUMEG Identity adalah layanan Single Sign-On (SSO) dan manajemen identitas terpusat berbasis Keycloak yang dirancang untuk mendukung ekosistem aplikasi di lingkungan Duta Meta Graha.

Dengan DUMEG Identity, pengguna hanya memerlukan satu set kredensial untuk mengakses berbagai aplikasi internal DUMEG secara aman, cepat, dan tanpa hambatan perpindahan akun.


1. Konteks Layanan ​

Layanan DUMEG Identity beroperasi dengan parameter koneksi resmi berikut:

ParameterNilai KonfigurasiKeterangan
Identity Provider (IdP)https://login.dumeg.comBase URL server identitas Keycloak
Realm Targetdumeg-internalRealm otentikasi ekosistem aplikasi DUMEG
Portal Dokumentasihttps://identity.dumeg.comDeveloper Portal & Panduan Integrasi SSO
Protokol StandarOpenID Connect (OIDC) & OAuth 2.0Standardisasi industri untuk autentikasi modern
Alur RekomendasiAuthorization Code Flow + PKCE S256Proteksi pertukaran kode otorisasi dari penyadapan

Peran Developer Portal

DUMEG Identity bukan aplikasi login baru yang menggantikan Keycloak. Proyek ini adalah Developer Portal & Panduan Integrasi SSO agar para pengembang aplikasi di lingkungan DUMEG dapat menghubungkan layanannya ke Keycloak secara konsisten, aman, dan teruji.


2. Prinsip & Filosofi Integrasi ​

Pengembangan DUMEG Identity memegang prinsip-prinsip utama sebagai berikut:

A. Integrasi Bersifat Opsional ​

Aplikasi tidak diwajibkan untuk serta-merta mengganti sistem autentikasi yang sudah ada. Aplikasi yang telah memiliki sistem login lokal (misalnya username/password di database internal) dapat:

  • Mempertahankan form login lokal tersebut secara penuh.
  • Menyediakan tombol "Masuk dengan DUMEG Identity" sebagai opsi alternatif atau opsi primer.

B. Pemisahan Autentikasi vs Otorisasi ​

  • DUMEG Identity (Autentikasi): Menjawab pertanyaan "Siapakah pengguna ini?" (Verifikasi identitas, profil dasar, email, dan status aktif akun).
  • Aplikasi Anda (Otorisasi): Menjawab pertanyaan "Apa yang berhak dilakukan pengguna di aplikasi ini?" (Role, permissions, akses menu, dan kepemilikan data dikelola 100% oleh database dan kebijakan aplikasi Anda).

C. Kedaulatan Data Lokal ​

Aplikasi tetap memegang tabel data pengguna lokal (users, profiles, dsb.) untuk menyimpan relasi bisnis aplikasi, histori transaksi, dan preferensi lokal tanpa ketergantungan skema data pada Keycloak.


3. Pilihan Model Integrasi Akun Pengguna ​

Setiap tim pengembang dapat memilih salah satu atau kombinasi strategi pemetaan identitas berikut:

                  ┌───────────────────────────────┐
                  │    Login Sukses di Keycloak   │
                  │ (Klaim: sub, email, username) │
                  └───────────────┬───────────────┘
                                  │
                                  ▼
                    ┌───────────────────────────┐
                    │ Apakah `keycloak_id` ada  │
                    │ di database aplikasi?     │
                    └──────┬─────────────┬──────┘
                       Ya  │             │ Tidak
           ┌───────────────┘             └───────────────────┐
           ▼                                                 ▼
┌───────────────────────┐                      ┌───────────────────────────┐
│ Langsung Terbitkan    │                      │ Apakah email sudah        │
│ Sesi Lokal Aplikasi   │                      │ terdaftar di tabel lokal? │
└───────────────────────┘                      └──────┬─────────────┬──────┘
                                                  Ya  │             │ Tidak
                                      ┌───────────────┘             └─────────────┐
                                      ▼                                           ▼
                           ┌─────────────────────┐                     ┌─────────────────────┐
                           │   Account Linking   │                     │  JIT Provisioning   │
                           │ Minta konfirmasi    │                     │ Buat user baru di   │
                           │ password lokal dulu │                     │ tabel dengan role   │
                           │ (Jangan auto-link!) │                     │ default terendah    │
                           └─────────────────────┘                     └─────────────────────┘

1. Account Linking Terverifikasi (Tautkan Akun Lama) ​

Bagi aplikasi yang sudah memiliki basis pengguna sebelum SSO diimplementasikan:

  • Pengguna login via DUMEG Identity.
  • Aplikasi mendeteksi bahwa email sudah ada di tabel lokal, tetapi belum memiliki keycloak_id.
  • Wajib Verifikasi Kepemilikan: Aplikasi tidak boleh langsung menautkan akun secara otomatis. Aplikasi harus meminta konfirmasi password lokal sekali saja atau mengharuskan penautan akun dilakukan saat pengguna sudah login di menu profil lokal.

2. Just-in-Time (JIT) Provisioning ​

Bagi pengguna baru yang belum pernah terdaftar di aplikasi:

  • Saat pengguna login pertama kali melalui DUMEG Identity dan berhasil divalidasi.
  • Aplikasi secara otomatis menyisipkan record baru ke tabel users dengan informasi nama dan email dari ID Token Keycloak.
  • Role standar terendah (least privilege) diberikan kepada pengguna baru sesuai kebijakan sistem.

3. Co-existence / Hybrid Login ​

Pengguna dipersilakan memilih cara masuk:

  • Menggunakan kredensial lokal aplikasi (berguna untuk akun teknis, super-admin darurat, atau akun pihak ketiga).
  • Menggunakan DUMEG Identity SSO untuk efisiensi seluruh karyawan internal DUMEG.

4. Endpoint Spesifikasi Keycloak ​

Keycloak mengekspos endpoint standar OpenID Connect Discovery di mana seluruh konfigurasi kriptografi dan rute URL dapat diakses:

EndpointMetodeURL SpesifikasiAksi
OpenID Provider Configuration (.well-known)
Discovery document metadata spesifikasi OpenID Connect.
GEThttps://login.dumeg.com/realms/dumeg-internal/.well-known/openid-configuration
Authorization Endpoint
Endpoint login & inisiasi authorization code dengan PKCE S256.
GEThttps://login.dumeg.com/realms/dumeg-internal/protocol/openid-connect/auth
Token Endpoint
Pertukaran authorization code dengan ID Token, Access Token, & Refresh Token.
POSThttps://login.dumeg.com/realms/dumeg-internal/protocol/openid-connect/token
JWKS (JSON Web Key Set) Endpoint
Public key untuk validasi signature kriptografi token RS256.
GEThttps://login.dumeg.com/realms/dumeg-internal/protocol/openid-connect/certs
Userinfo Endpoint
Mendapatkan data klaim identitas profil pengguna aktif.
GET / POSThttps://login.dumeg.com/realms/dumeg-internal/protocol/openid-connect/userinfo
End Session / Logout Endpoint
Mengakhiri sesi SSO Keycloak secara terpusat (RP-Initiated Logout).
GET / POSThttps://login.dumeg.com/realms/dumeg-internal/protocol/openid-connect/logout

Discovery Endpoint Otomatis

Library OIDC modern di Laravel, Node.js, Vue, React, maupun Next.js dapat membaca seluruh konfigurasi secara otomatis cukup dengan mengarahkan issuer ke: https://login.dumeg.com/realms/dumeg-internal


5. Pilihan Panduan Integrasi Framework ​

Pilih panduan implementasi sesuai dengan stack teknologi dan model arsitektur aplikasi Anda:

Developer Portal Single Sign-On (SSO) Ekosistem DUMEG