Login
Alamat
Issuer: https://<organisasi>.x-guard.online, atau domain sendiri bila organisasi memakainya. Semua alamat lain dibaca dari discovery <issuer>/.well-known/openid-configuration; tulis tetap hanya bila pustaka Anda tidak membaca discovery (mis. ASP Classic).
| Endpoint | Alamat |
|---|---|
| Discovery | <issuer>/.well-known/openid-configuration |
| Authorize | <issuer>/authorize |
| Token | <issuer>/oauth/token |
| Userinfo | <issuer>/userinfo |
| Kunci publik (JWKS) | <issuer>/keys |
| Logout | <issuer>/end_session |
| Introspeksi | <issuer>/oauth/introspect |
| Pencabutan token | <issuer>/revoke |
Issuer adalah identitas organisasi: token dari issuer lain (organisasi lain) harus ditolak.
Alur
Authorization code dengan PKCE S256, state, dan nonce:
- Aplikasi membuat
state,nonce, dancode_verifieracak, menyimpannya di sesi server (atau cookie bertanda tangan), lalu mengalihkan browser ke<issuer>/authorizedenganresponse_type=code,client_id,redirect_uri,scope,state,nonce,code_challenge, dancode_challenge_method=S256. - Pengguna login di halaman organisasi. Bila sesi X-Guard masih ada, langkah ini dilewati.
- X-Guard mengalihkan kembali ke
redirect_uri?code=...&state=.... - Aplikasi mencocokkan
state, lalu menukarcodedi<issuer>/oauth/tokendari server, dengan client secret (Basic auth atau body) dancode_verifier. - Aplikasi memverifikasi ID token (lihat Token dan klaim), lalu membuat sesinya sendiri.
Scope
| Scope | Isi |
|---|---|
openid | Wajib. Klaim sub |
profile | name |
email | email, email_verified |
offline_access | Refresh token |
Parameter tambahan
| Parameter | Arti |
|---|---|
prompt=none | Login senyap: tanpa layar apa pun. Bila sesi X-Guard tidak ada, dijawab login_required |
prompt=login | Paksa login ulang walau sesi masih ada |
max_age=<detik> | Sesi yang lebih tua dari batas ini dianggap tidak ada |
audience=<client_id API> | Minta access token untuk API lain (harus diizinkan di kolom Audience aplikasi) |
Galat di alamat callback
X-Guard mengalihkan ke redirect_uri?error=...&error_description=...&state=.... Percayai galat hanya bila state cocok dengan yang disimpan, supaya pihak luar tidak bisa memaksa aplikasi ke keadaan tertentu.
error | Artinya | Yang dilakukan aplikasi |
|---|---|---|
access_denied | Pengguna tidak diberi akses ke aplikasi ini | Tampilkan pesan; jangan diulang otomatis |
login_required | Login senyap, tetapi sesi X-Guard tidak ada (sudah logout, kedaluwarsa, atau akun dinonaktifkan) | Akhiri sesi lokal, lalu login biasa |
interaction_required, consent_required | Login senyap tidak bisa diselesaikan tanpa pengguna | Perlakukan seperti login_required |
invalid_request | Permintaan salah, mis. SPA tanpa PKCE | Perbaiki konfigurasi aplikasi |
Alamat callback atau client_id yang salah tidak dialihkan ke aplikasi: X-Guard menampilkan halaman galat sendiri, karena mengalihkan ke alamat yang tidak terdaftar berbahaya.