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