k·komodoSSO DEMO← Kembali ke demo

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.

01

Redirect 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().

02

Validasi 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().

03

Buat 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.