Tujuan filosofis nya OAuth 2 adalah untuk pendelegasian otorisasi.

Artinya aplikasi client berperilaku mewakili pengguna dalam mendapatkan resources (address book, alamat email, foto, dll), tetapi dengan cara yang se-aman mungkin, dan tidak meng-expose username/password dari pengguna.

Cara realistis nya OAuth dari tujuan diatas adalah dengan memberikan akses otorisasi API memakai access token.

Apa itu Access Token ?

Access tokens are the thing that applications use to make API requests on behalf of a user. The access token represents the authorization of a specific application to access specific parts of a user’s data.

dari Access Token - OAuth.com

terjemahan bebas:

Access tokens adalah sebuah objek yang mewakili otorisasi pengguna yang digunakan oleh aplikasi untuk mengakses document/resource pengguna melalui request API .

dari Access Token - OAuth.com

Access Token ini ibarat sebuah kartu akses di hotel atau di perkantoran, yang bentuknya polos/kosong di luar, tetapi didalamnya ada informasi aksesnya. Dan kartu akses ini hanya bisa digunakan di tempat/service yang sudah ditentukan dengan cara menempelkan kartunya. Sehingga kartu ini tidak dilihat dari bentuknya punya siapa (karena tidak ada informasi penggunanya), tetapi dari hak aksesnya saja.

Seberapa penting dan rahasia kah Access Token ini ?


Seperti di kehidupan nyata, kartu akses adalah sesuatu yang penting. Begitu juga access token ini. Siapapun yang mendapatkan access token ini akan bisa mendapatkan hak akses didalamnya ketika mengakses API.

Oleh karena itu access token ini harus dirahasiakan ketika penyimpanan atau waktu dikirimkan ketika mengakses API.

Untuk penyimpanan, maka harus dipastikan bahwa tidak ada aplikasi lain yang bisa mengakses access token ini di perangkat yang sama.

Ketika mengirim API request, harus dipastikan juga bahwa access token dikirimkan dengan protokol HTTPS . Karena dengan protokol HTTPS lah, hampir semua bagian akan di-encrypt, termasuk URL, query param, request body, http type, dll.

Pihak mana yang boleh mengetahui Access Token ini ?


Hanya 3 pihak yang boleh mengakses access token ini , yaitu :

  1. Aplikasi Client yang berlaku sebagai perwakilan pengguna.
  2. Server Otorisasi / Authorization Server.
  3. API / Resource Server

Seperti halnya kartu akses hotel, maka hanya tamu, card reader, dan juga petugas kartu akses yang mempunyai hak untuk membaca kartu itu.

Oleh karena itu kerahasiaan access token harus dijaga seperti dijelaskan di paragraf sebelumnya.

Access token ini bersifat Opaque bagi aplikasi client.

Maksudnya ?

Access Token ini adalah bersifat black box bagi client. Sama seperti kartu akses hotel yang kita tidak tahu apa saja isi didalamnya, apa ada chip nya kah, atau pakai magnetic nya kah, yang penting bisa kita gunakan untuk akses masuk/keluar ketika ditempelkan ke card reader

Semirip dengan itu, maka di OAuth 2, Aplikasi client tidak perlu meng-extract data di dalam access token nya untuk bisa melakukan otorisasi. Cukup ambil dan lampirkan untuk request API selanjutnya.

Hal ini karena format Access Token ini tidak dispesifikasikan oleh standar OAuth 2. Bisa berbentuk JWT (JSON Web Token) yang bisa di-encode pakai tools, atau bisa berupa format lain yang sulit di-encode.

Oleh karena itu, pilihannya cuma :

  1. Dapatin Access token.
  2. Passing Access Token itu untuk request API selanjutnya.