Authentication dan Authorization

Nanda Fadhil Azman
3 min readNov 7, 2018

--

Istilah authentication dan authorization biasa digunakan pada security, terutama pada saat mendapatkan izin untuk mengakes suatu sistem. Walaupun terdengar mirip, kedua istilah tersebut berbeda antara satu dan yang lainnya. Authentication berarti mengkomfirmasi identitas sedangkan authorization berarti memberikan akses ke sistem.

Authentication adalah mengenai validasi seperti username atau userid dan password untuk mengverifikasi identitas. Sebagai contoh saat memasuki ATM untuk melakukan transaksi. Saat memasukan kartu mesin akan meminta pin dan apabila benar maka bank akan mengkonfirmasi identitas pemilik kartu. Dengan memvalidasi pin kartu ATM, bank sebenernya mengverifikasi identitas pemilik kartu yang disebut authentication.

Di lain pihak authorization adalah proses untuk menentukan apakah user yang sudah authenticated mempunyai akses kepada sumber tertentu. Hal ini mengverifikasi hak kita untuk mengakses sumber seperti informasi, database, files dan lain lain. Sebagai contoh saat menaiki gerbong kereta api eksekutif. Petugas akan mengverifikasi tiket kereta dengan KTP pemilik tiket yang disebut dengan proses authentication. Selanjutnya petugas akan memberikan petunjuk di mana pemilik tiket tersebut dapat duduk. Pemilik tiket kereta eksekutif tersebut tidak diizinkan duduk di gerbong bagian bisnis.

Session Based Authentication

Pada session based authentication, server aka membuat session untuk user setelah user log in. Session id akan disimpan di dalam cookie pada browser yang digunakan user. Selama user tetap dalam keadaan log in, Cooki dapat dikirim pada setiap request yang dilakukan oleh user. Server lalu melakukan perbandingan dengan session id yang disimpan pada cookie dengan informasi session yang disimpan pada memory untuk mengverifikasi identitas user dan mengembalikan respon sesuai dengan status yang diberikan.

Session Based Authentication Flow

Token Based Authentication

Terdapat banyak aplikasi web menggunakan JSON Web Token (JWT) dibandingkan sessions untuk authentication. Pada aplikasi token based, server akan membuat JWT dengan rahasia dan mengirim JTW kepada client. Client kemudian menyimpan JTW (biasanya pada local storage) dan memasukan JWT kedalam headers untuk setiap request yang dilakukan oleh client. Server kemudian akan memvalidasi JWT pada setiap request yang dilakukan clinet dan mengembalikan respons yang sesuai.

Token Based Authentication Flow

Perbedaan yang sangat besar disini adalah user’s state tidak disimpan di dalam server, akan tetapi disimpan didalam token pada sisi client. Sebagian besar aplikasi web modern menggunakan JWT untuk authentication dengan alasan scalabilty dan mobile device authentication.

Scalability

Session Based: karena session disimpan di dalam server memory, scaling menjadi masalah ketika terdapat banyak user dalam jumlah besar yang menggunakan sistem secara bersamaan.

Token Based: Tidak ada masalah pada scaling karena token disimpan pada sisi client.

Multiple Device

Session Based: Cookies biasanya bekerja pada single domain atau subdomains dan mereka dinonaktifkan oleh browser apabila mereka melakukan cross domain. Ini dapat menyebabkan masalah ketika APIs diberikan dari domain yang berbeda ke mobile dan web devices.

Token Based: Tidak terdapat masalah dengan cookies karena JWT disimpan didalam request header.

--

--