Skip to content

Logout dan sesi ​

Satu sesi X-Guard dipakai semua aplikasi organisasi. Logout mengakhiri sesi itu, jadi semua aplikasi ikut keluar.

Logout dari aplikasi ​

  1. Hapus sesi lokal aplikasi.

  2. 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, iss sama dengan issuer, aud berisi client ID,
  • klaim events berisi http://schemas.openid.net/event/backchannel-logout,
  • tidak ada klaim nonce,
  • iat tidak 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.