Logout dan sesi
Satu sesi X-Guard dipakai semua aplikasi organisasi. Logout mengakhiri sesi itu, jadi semua aplikasi ikut keluar.
Logout dari aplikasi
Hapus sesi lokal aplikasi.
Alihkan browser ke:
text<issuer>/end_session?id_token_hint=<id_token>&post_logout_redirect_uri=<alamat sesudah logout>
id_token_hint (ID token dari login) membuktikan permintaan berasal dari aplikasi Anda. X-Guard mengakhiri sesi, memberi tahu aplikasi lain lewat back-channel logout, lalu mengembalikan pengguna ke post_logout_redirect_uri (yang harus terdaftar). Tanpa id_token_hint, X-Guard meminta konfirmasi pengguna lebih dulu.
Back-channel logout
Untuk aplikasi Web yang alamatnya bisa dijangkau dari internet. Isi Alamat back-channel logout di konsol, mis. https://aplikasi-anda/auth/backchannel-logout.
Saat sesi X-Guard berakhir (dari aplikasi mana pun), X-Guard mengirim:
http
POST /auth/backchannel-logout
Content-Type: application/x-www-form-urlencoded
logout_token=<JWT>Periksa logout_token:
- tanda tangan RS256 dengan JWKS issuer,
isssama dengan issuer,audberisi client ID, - klaim
eventsberisihttp://schemas.openid.net/event/backchannel-logout, - tidak ada klaim
nonce, iattidak lebih dari beberapa menit lalu.
Lalu cabut sesi lokal yang sid-nya sama dengan klaim sid (simpan sid dari ID token saat login), dan jawab 200. Bila sid kosong, cabut semua sesi milik sub.
Aplikasi tanpa alamat publik
Aplikasi intranet atau localhost tidak bisa dijangkau X-Guard. Pakai login senyap berkala: setiap beberapa menit (mis. 1 sampai 15 menit) pada permintaan halaman GET, alihkan ke /authorize dengan prompt=none.
- Sesi X-Guard masih ada: X-Guard langsung mengembalikan
code, pengguna tidak melihat apa pun. - Sesi sudah berakhir (logout di aplikasi lain, kedaluwarsa, akun dinonaktifkan):
error=login_required. Akhiri sesi lokal dan minta login lagi. - Akses ke aplikasi dicabut:
error=access_denied. Akhiri sesi lokal.
SDK Laravel dan ASP Classic sudah menyediakan pemeriksaan ini (CekSesiXGuard, xgWajibLogin).
Pengguna dinonaktifkan
Saat admin menonaktifkan atau menghapus pengguna, sesi X-Guard-nya tidak bisa dipakai lagi dan refresh token-nya ditolak. Access token yang sudah terbit habis dalam 5 menit. Supaya sesi lokal ikut berakhir seketika, pasang webhook dan tangani user.disabled dan user.deleted.