Artikel ini menjelaskan cara mengelola sesi dengan Identity-Aware Proxy (IAP) jika Anda menggunakan identitas eksternal untuk autentikasi.
Memuat ulang sesi
Sesi Identity Platform berlaku selama satu jam. Saat sesi berakhir, aplikasi Anda harus mengalihkan ke halaman autentikasi. Halaman autentikasi berisi token refresh Identity Platform. Selama kredensial pengguna masih valid, Anda dapat menggunakannya untuk autentikasi ulang tanpa menampilkan UI apa pun.
Jika pengguna baru saja mengubah email atau sandinya, atau terjadi tindakan lain yang mencabut token, mereka harus menyelesaikan alur autentikasi lagi.
Menangani permintaan non-AJAX
Permintaan non-AJAX ditangani secara otomatis menggunakan pengalihan aplikasi, dengan asumsi halaman autentikasi telah dikonfigurasi dengan benar.
Menangani permintaan AJAX
Chrome dan browser lain menghentikan cookie pihak ketiga secara bertahap. Rekomendasi untuk membuat permintaan AJAX di halaman ini tidak akan berfungsi jika cookie pihak ketiga dinonaktifkan. Namun, rekomendasi yang diberikan akan tetap berfungsi jika sumber dan target permintaan AJAX berasal dari situs yang sama.
Untuk mendapatkan petunjuk tentang cara mengelola cookie pihak ketiga di Chrome, lihat Menghapus, mengizinkan, dan mengelola cookie di Chrome.
Jika Anda mengirim permintaan AJAX dengan token yang sudah tidak berlaku, permintaan tersebut akan menampilkan
kode status 401: Unauthorized
. Terapkan salah satu solusi berikut untuk
menangani hal ini:
- Ubah kode aplikasi Anda untuk menangani kode status
401
HTTP. - Tambahkan
iframe
ke aplikasi Anda untuk merujuk ke penyegaran sesi. - Minta pengguna Anda untuk memuat penyegaran sesi secara manual di tab terpisah.
Jika Anda menerima kode status 302
, bukan 401
sebagai respons atas permintaan
AJAX, tambahkan header X-Requested-With
dengan nilai XMLHttpRequest
.
Hal ini akan memberi tahu IAP bahwa permintaan tersebut berasal dari JavaScript.
Menangani HTTP 401 secara terprogram
Menangani kode status 401
HTTP secara terprogram adalah cara yang direkomendasikan untuk
memperbarui sesi AJAX. Untuk melakukan ini:
Perbarui kode aplikasi Anda untuk menangani error.
Menambahkan pengendali yang membuka jendela untuk mengautentikasi ulang pengguna, lalu menutupnya saat proses selesai.
Menggunakan iframe
Jika Anda tidak dapat menangani 401
HTTP secara terprogram, solusi terbaik berikutnya
adalah menambahkan iframe
ke aplikasi Anda yang mengarah ke penyegaran sesi.
Contoh:
<iframe src="https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER" style="width:0;height:0;border:0; border:none;"></iframe>
Memuat penyegaran sesi
Sebagai upaya terakhir, Anda dapat meminta pengguna untuk memuat penyegaran sesi secara manual. Tambahkan panduan ke aplikasi Anda atau dokumentasinya yang mengarahkan pengguna untuk membuka URL berikut di tab terpisah:
https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER
Membuat pengguna logout
Agar pengguna logout dari resource IAP, gunakan parameter kueri ?gcp-iap-mode=GCIP_SIGNOUT
. Misalnya, di aplikasi App Engine, URL-nya akan terlihat seperti ini:
https://example.com/some/path?gcp-iap-mode=GCIP_SIGNOUT
Pengguna akan dialihkan kembali ke halaman login setelah mereka logout.
Agar pengguna logout dari semua resource dan sesi, alihkan mereka ke URL autentikasi dengan kunci API Anda dan mode=signout
yang ditambahkan sebagai parameter. Contoh:
https://auth.example.com/?apiKey=API-KEY&mode=signout
Pengguna akan tetap berada di halaman tersebut setelah logout selesai. Sebaiknya terapkan callback completeSignOut()
pada objek AuthenticationHandler
untuk memberikan masukan kepada pengguna bahwa mereka berhasil logout.
Beralih antar-tenant
Dalam beberapa kasus, pengguna mungkin ingin melakukan autentikasi dengan beberapa tenant untuk resource IAP yang sama. Misalnya, holder tersebut mungkin milik beberapa tenant yang memberikan tingkat akses berbeda, dan ingin beralih ke tenant dengan hak istimewa yang lebih sedikit atau lebih besar.
Untuk memaksa proses pemilihan tenant agar dimulai ulang, gunakan ?gcp-iap-mode=CLEAR_LOGIN_COOKIE
. Misalnya, pada aplikasi App Engine,
URL-nya mungkin terlihat seperti ini:
https://PROJECT-ID.appspot.com/some/path?gcp-iap-mode=CLEAR_LOGIN_COOKIE