Ini adalah salah satu bagian terpenting dari RESTful API yang aman untuk mengontrol akses ke server dan data. Semakin populernya aplikasi web, aplikasi seluler, dan layanan mikro membuat penerapan skema autentikasi yang kuat menjadi keharusan mutlak bagi para pengembang API. Pada artikel ini, kita akan membahas berbagai metode dan praktik terbaik autentikasi RESTful API.
Memahami Otentikasi API RESTful
RESTful API mengadopsi gaya arsitektur REST, seperti halnya klien dan server komunikasi tanpa kewarganegaraan. Otentikasi adalah mekanisme yang digunakan untuk mengidentifikasi klien dan memberinya akses ke sumber daya. Karena API REST tidak memiliki kewarganegaraan, informasi autentikasi harus menyertai setiap permintaan, paling sering melalui header.
Pada dasarnya ada dua jenis otentikasi:
- Otentikasi Pengguna: Mengidentifikasi pengguna manusia (misalnya, melalui nama pengguna dan kata sandi).
- Otentikasi Aplikasi: Otentikasi aplikasi (misalnya, menggunakan kunci API atau sertifikat).
sumber: mojoauth.com |
Metode Otentikasi Umum
1. Kunci API
Kunci API adalah token dasar yang ditambahkan klien dalam setiap permintaan, untuk mengidentifikasi dirinya ke API. Kunci ini biasanya per-aplikasi atau per-pengguna dan biasanya dikirim dalam header Otorisasi atau sebagai parameter kueri.
Keuntungan:
- Mudah diimplementasikan.
- Baik untuk pengenalan aplikasi.
Kekurangan:
- Rentan jika dikirim melalui tautan yang tidak aman
- Kurangnya kontrol akses tingkat pengguna yang melekat
2. Otentikasi Dasar
- Sangat mudah untuk diimplementasikan.
- Dapat digunakan oleh sebagian besar klien dan pustaka HTTP.
- Jika tidak dikirim melalui HTTPS, kredensial akan terekspos.
- Tidak mendukung pencabutan token tanpa perubahan kredensial.
3. OAuth 2.0
- Aman dan terukur.
- Menyediakan kontrol akses berbutir halus dengan menggunakan cakupan.
- Memungkinkan Anda mencabut dan mengatur batas waktu token.
- Rumit untuk diimplementasikan.
- Anda harus mengelola token dan menyegarkan token dengan benar.
4. JWT (Token Web JSON)
- Tidak memiliki kewarganegaraan dan tidak memerlukan penyimpanan di sisi server.
- Ini mengkodekan klaim seperti peran pengguna dan izin di dalam token.
- Kita dapat melihat muatan token jika tidak dienkripsi.
- Anda tidak dapat mencabut token individu tanpa infrastruktur tambahan.
5. Autentikasi Berbasis Sesi
- Memiliki manajemen sesi terpusat.
- Dapat memaksa logout atau berakhirnya sesi dengan segera.
- Penyimpanan sesi sisi server (REST gagal tanpa kewarganegaraan).