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

William Denniss
Owen Campbell-Moore

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

Kini, setelah perangkat, khususnya perangkat seluler, bersifat lebih pribadi, dan dengan lebih banyak situs yang mengirim semua traffic melalui HTTPS mengurangi risiko pencurian token, situs harus mempertimbangkan kembali kebijakan cookie berumur pendek dan mengadopsi sesi berumur lebih panjang yang lebih ramah pengguna.

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 dibuat). Hal ini biasanya menyebabkan sesi yang singkat, dengan pengguna yang sering login agar autentikasi mereka dapat divalidasi ulang, sehingga hal-hal seperti perubahan sandi membatalkan validasi 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 memiliki token sekunder berumur panjang yang dapat digunakan untuk memperbarui cookie autentikasi berumur singkat yang sudah ada. Dengan memanfaatkan pola pekerja layanan baru, kami dapat secara rutin "check in" menggunakan token yang berumur panjang, memverifikasi autentikasi pengguna (misalnya, memeriksa apakah pengguna belum mengubah sandinya atau mencabut sesi), dan menerbitkan ulang cookie autentikasi baru yang berumur pendek.

Proposal praktis untuk bermigrasi ke sesi yang aman dan lama di web

Dari sini, postingan ini menjelaskan teknik baru yang kami usulkan untuk disebut 2-Cookie-Handoff (2CH). Kami berharap dapat menggunakan artikel ini untuk mendengar masukan dari komunitas tentang apakah pendekatan ini tampak positif, dan jika ya, 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. Coroutine memungkinkan Anda mencegat semua permintaan jaringan dari situs Anda melalui titik kode yang umum pada klien, tanpa mengubah halaman yang ada. Hal ini memungkinkan Anda menyiapkan "pekerja 2CH" untuk pengguna yang login dan dapat menangkap semua permintaan jaringan yang dibuat halaman Anda dan melakukan pertukaran token seperti yang dilakukan aplikasi seluler.

Sering kali server Anda sudah memiliki endpoint yang digunakan oleh aplikasi seluler untuk mendapatkan token baru yang berumur pendek, biasanya menggunakan protokol OAuth. Untuk mengaktifkan pola di atas di web, endpoint tersebut hanya perlu diupdate untuk memahami kapan ia dipanggil oleh pekerja layanan, lalu menampilkan cookie sesi baru berjangka pendek yang diformat dengan cara yang diharapkan oleh halaman lain di situs.

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

Urutan pengalihan 2 cookie

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

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

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