RESTful API - Authentication and Authorization

Penjelasan

Authentication

  • Memvalidasi kredensial untuk memverifikasi pemilik identitas
  • contoh pada proses login menggunakan username dan password

Authorization

  • Proses setelah dilakukan Authentication
  • Memvalidasi apakah pemilik identias memiliki hak akses untuk mengakses resource yang diminta
  • Contoh pada Access-Control List / Role / Permission

Contoh Authenticaion dan Authorization

  • Basic Auth
  • API-Key
  • Oauth 2
  • dll

Basic Auth

  • Authentication sederhana menggunakan username dan password
  • Cukup menggunakan header Authorization
  • https://tools.ietf.org/html/rfc7617
  • Authorization : Basic base64(username:password)
  • cocok untuk authentication dari server ke server, misal server payment gateway dengan server e-commerce 
  • tidak cocok digunakan di mobile apps
  • akan selalu dikirimkan setiap request

API-Key

  • Mirip dengan Basic Auth, tapi tidak menggunakan username password,  Authentication sederhana menggunakan API-Key atau Secret Key
  • Cukup menggunakan header sesuai dengan yang diinginkan dan value berisi API-Key atau secret key
  • Contoh, API-Key : random-api-key-urnod2i3unr8qy78n8nrf83ufior2u3fior
  • lebih aman, login di payment gateway, api key akan dikirim dari payment gateway, jika bocor, tinggal login ulang di payment gateway
  • tidak ada standard baku

OAuth 2

  • Mekanisme Authentication dan Authorization yang saat ini populer
  • Banyak digunakan untuk integrasi Mobile app dan server
  • simple dan sangat aman
  • https://tools.ieth.org/html/rfc6749
  • https://tools.ieth.org/html/rfc6750
  • menggunakan token (access token ( biasanya hanya valid selama 1 jam) dan refresh token (biasanya hanya valid selama 1 minggu)), dikirim setiap request
  • ketika token sudah invalid, maka app akan meminta refresh token kepada authentication server

Poin / Ide

  • Menggunakan OAuth 2 lebih baik dari pada 2 pilihan sebelumnya
Scroll to Top