Selamat tinggal sesi singkat - Proposal untuk menggunakan pekerja layanan guna meningkatkan pengelolaan cookie di web

William Denniss
Owen Campbell-Moore

Kita semua menyukai bagaimana aplikasi native meminta Anda login hanya satu kali, lalu mengingat sampai Anda memberi tahu pengguna bahwa Anda ingin logout. Sayangnya web tidak selalu bekerja seperti itu.

Karena perangkat, terutama perangkat seluler, sekarang bersifat lebih personal, dan dengan makin banyaknya situs yang mengirim semua traffic melalui HTTPS mengurangi risiko pencurian token, situs harus mempertimbangkan kembali kebijakan cookie masa aktifnya yang singkat dan mengadopsi sesi berdurasi lebih lama yang lebih mudah digunakan.

Namun, meskipun Anda ingin membuat sesi bertahan lebih lama, beberapa situs tidak memverifikasi autentikasi pengguna pada setiap permintaan (dengan kata lain, tidak ada cara untuk mencabut cookie sesi setelah dikeluarkan). Hal ini biasanya menyebabkan sesi singkat, dengan pengguna dipaksa untuk sering login sehingga autentikasi mereka dapat divalidasi ulang, sehingga beberapa hal seperti perubahan sandi dapat membatalkan sesi yang sudah ada dalam jangka waktu yang diketahui.

Jika ini adalah pendekatan yang Anda gunakan, kami memiliki solusi teknis yang dapat membantu Anda memvalidasi ulang cookie autentikasi stateless secara otomatis. Cara kerjanya adalah dengan memiliki token sekunder berumur panjang yang dapat digunakan untuk memperbarui cookie autentikasi jangka pendek yang sudah ada. Dengan memanfaatkan pola pekerja layanan baru, kami dapat secara rutin "memeriksa" dengan token yang berumur panjang, memverifikasi autentikasi pengguna (misalnya, memeriksa untuk melihat apakah mereka belum mengubah sandi, atau mencabut sesi) dan menerbitkan ulang cookie autentikasi dengan masa aktif singkat yang baru.

Proposal praktis untuk bermigrasi ke sesi panjang yang aman di web

Dari sini, postingan ini menjelaskan teknik baru yang kami usulkan yang kami sebut 2-Cookie-Handoff (2CH). Kami berharap dapat membaca artikel ini untuk mendengar masukan dari komunitas tentang apakah pendekatan ini tampak positif atau tidak, dan untuk bekerja sama dengan industri dalam mendokumentasikan praktik terbaik penggunaan 2CH.

Pekerja layanan adalah teknologi baru yang didukung oleh beberapa browser seperti Chrome, Firefox, Opera, dan akan segera hadir di Edge. Fungsi ini memungkinkan Anda menangkap semua permintaan jaringan dari situs Anda melalui titik umum kode pada klien, tanpa mengubah halaman yang ada. Dengan begitu, Anda dapat menyiapkan "pekerja 2CH" untuk pengguna yang login, yang dapat menangkap semua permintaan jaringan yang dibuat halaman Anda dan melakukan pertukaran token seperti yang dilakukan aplikasi seluler.

Biasanya server Anda sudah memiliki endpoint yang digunakan oleh aplikasi seluler untuk mendapatkan token baru yang memiliki masa aktif singkat, biasanya menggunakan protokol OAuth. Untuk mengaktifkan pola di atas di web, endpoint tersebut hanya perlu diperbarui agar dapat memahami kapan dipanggil oleh pekerja layanan, lalu menampilkan cookie sesi berumur pendek baru yang diformat dengan cara yang diharapkan oleh halaman lain di situs tersebut.

Jika belum memiliki endpoint seperti itu, server Anda dapat membuatnya khusus untuk pengelolaan sesi browser.

Urutan handoff 2-cookie

Pola dua token dengan pekerja layanan mengikuti pola OAuth 2.0 dengan cukup cermat. Jika Anda sudah menjalankan endpoint token OAuth, mungkin Anda dapat menggunakannya kembali dengan pekerja layanan untuk autentikasi web.

Anda mungkin juga ingin tahu apa yang terjadi jika pengguna mengunjungi browser yang tidak mendukung pekerja layanan. Jika Anda menerapkan pendekatan di atas, mereka tidak akan mengalami perbedaan dan terus mengalami sesi singkat.

Kami telah memublikasikan klien dan backend contoh. Kami harap Anda akan mencobanya sendiri dan menjawab survei tentang pengelolaan sesi.