Integrasi SSO.
Hubungkan aplikasi Anda dengan akun Komodo One.
Coba login SSO ↗
Siapkan client
Minta client ID dan secret dari admin Komodo One. Daftarkan kedua URL aplikasi Anda:
- Login URL
https://demo-sso.insalusi.dev/sso/login
- Callback URL
https://demo-sso.insalusi.dev/sso/callback
Konfigurasi .env demo
APP_URL=https://demo-sso.insalusi.devSSO_AUTHORIZE_URL=https://k1.insalusi.dev/sso/authorizeSSO_API_BASE=https://api-k1.insalusi.dev/v1SSO_CLIENT_ID=<client-id>
SSO_CLIENT_SECRET=<client-secret>
SSO_AUTHORIZE_URL menunjuk halaman login/persetujuan Komodo One. SSO_API_BASE menunjuk API, termasuk prefix /v1. Simpan secret hanya di server.
01Redirect ke Komodo One
Buat state acak, simpan di sesi, lalu arahkan browser ke URL otorisasi dengan parameter berikut.
Parameter redirect
- URL otorisasi
https://k1.insalusi.dev/sso/authorize
client_id=<client-id>
redirect_uri=https://demo-sso.insalusi.dev/sso/callbackstate=<nilai-acak-dari-sesi>
Gunakan URL encoding untuk query. Implementasi: src/Sso.php → start().
02Validasi callback & tukar code
Callback menerima code dan state. Cocokkan state dengan sesi dan hapus setelah digunakan. Tukar code dari server aplikasi Anda.
Request & response exchange
POST https://api-k1.insalusi.dev/v1/sso/exchange
Headers: Accept: application/json, Content-Type: application/json.
{
"client_id": "<client-id>",
"client_secret": "<client-secret>",
"code": "<code>",
"redirect_uri": "https://demo-sso.insalusi.dev/sso/callback"
}
200 OK
{
"success": true,
"message": "Success",
"data": {
"user": {
"uuid": "bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb",
"name": "Demo User",
"username": "demo",
"email": "demo@example.com",
"email_verified_at": null
}
}
}
Code berlaku 120 detik, sekali pakai. redirect_uri harus sama persis dengan callback terdaftar. Implementasi: src/Sso.php → complete() dan src/Http.php → post().
03Buat sesi di aplikasi Anda
Gunakan data.user.uuid untuk menemukan atau membuat user lokal, lalu regenerasi ID sesi. Setelah itu user sudah login di aplikasi Anda.
Mapping user & penanganan error
- Petakan UUID ke
users.sso_uuid. Jangan otomatis menggabungkan akun berdasarkan email. - User SSO baru mendapat role User. Hak akses dikelola aplikasi Anda.
- State salah/kedaluwarsa,
error=access_denied, atau exchange gagal: hentikan login dan mulai ulang. - Logout demo mengakhiri sesi lokal. Sesi Komodo One tetap terpisah.
Implementasi: src/Users.php → fromSso(), src/Auth.php → establish(). Regenerasi sesi ada di src/Application.php.