Token vs Session Authentication

HTTP (HyperText Transfer Protocol)

HTTP adalah protokol untuk komunikasi antara client dan server. HTTP Stateless, yang berarti setiap permintaan tidak tahu tindakan sebelumnya. Sebagai contoh, ketika pengguna log in dan kemudian menavigasi melalui aplikasi, server tidak akan tahu bahwa kita hanya login tanpa sesi atau token otentikasi.

Session Authentication 

Dalam otentikasi sesi, server bertanggung jawab untuk membuat sesi untuk pengguna tertentu ketika pengguna log in, setelah itu ID sesi disimpan dalam cookie pada browser pengguna. Untuk setiap permintaan yang dikirim oleh pengguna, cookie akan dikirim di mana server dapat membandingkan ID sesi dari cookie dengan informasi sesi yang tersimpan di server sehingga identitas pengguna diverifikasi.

Token Authentication 

Dalam otentikasi token, server membuat JSON Web Token (JWT) dan mengirimkan token ke client. JSON Web Token biasanya disimpan dalam penyimpanan lokal atau di dalam cookie, dan itu termasuk dalam setiap permintaan yang dibuat oleh pengguna. Server akan memvalidasi JSON Web Token. JSON Web Token otentikasi adalah pendekatan yang lebih modern digunakan dalam aplikasi web yang lebih baru dan untuk perangkat mobile. Status pengguna tidak disimpan di server dengan pendekatan ini sebagai gantinya disimpan dalam Token.

Scalability 

Umumnya, JSON Web Token skala jauh lebih baik dengan ukuran aplikasi karena Stateless, tidak perlu informasi pengguna untuk disimpan, di sisi lain sesi dapat menggunakan banyak sumber daya server jika aplikasi memiliki banyak lalu lintas.

Security 

JSON Web Token biasanya disimpan didalam penyimpanan lokal atau cookie dan JavaScript memiliki akses ke penyimpanan, ini berarti bahwa JSON Web Tokens mungkin rentan terhadap XSS (Cross-Site Scripting), itu sebabnya data yang sangat sensitif tidak boleh disimpan dalam penyimpanan lokal. ketika JSON Web Tokens disimpan dalam cookie rentan terhadap serangan CSRF (Cross-Site request Forgery). Salah satu cara untuk mencegah serangan CRSF adalah memastikan bahwa cookie hanya dapat diakses oleh domain Anda. JWT juga harus dengan waktu expiration yang singkat dan HTTPS/SSL harus digunakan untuk transmisi client dan server yang aman.

Mana yang lebih baik?

Sementara sesi dan JSON Web Tokens keduanya pilihan yang layak. Untuk situs web yang lebih kecil dan menengah, ketika kami hanya mendapat otentikasi sesi login pengguna biasanya baik. Untuk situs web yang lebih besar dan aplikasi, ketika kita perlu menangani banyak permintaan JSON Web Token jauh lebih baik karena scaling.

You may like these posts