Daftar Lengkap Metode Autentikasi API: Dari Basic Auth hingga OAuth2.0 dan JWT
Autentikasi API sangat penting untuk melindungi data aplikasi. Memahami prinsip, kasus penggunaan, dan cara menggunakan metode autentikasi mulai dari Basic Auth hingga OAuth2 dan JWT membantu pengembang memilih pendekatan yang tepat untuk memastikan keamanan dan keandalan API.
Bayangkan meninggalkan rumah setiap pagi dengan pintu depan terbuka lebar, dan sebuah lampu neon besar berkedip: "Wi-Fi Gratis, Camilan Gratis, Tidak Ada Kamera Keamanan!"
Bunyinya konyol, kan?
Nah, itu tepatnya yang Anda lakukan jika Anda membangun API tanpa autentikasi yang tepat.
API adalah pintu depan ke data paling berharga aplikasi Andaâprofil pengguna, informasi pembayaran, meme kucing yang sedang dalam prosesâdan tebak apa? Internet pada dasarnya adalah satu lingkungan digital besar di mana tidak semua orang hanya keluar berjalan-jalan dengan anjing mereka.
Tanpa kunci, gembok, dan pemeriksaan ID yang tepat, API Anda menjadi buffet untuk bot, pelaku jahat, dan rekan kerja yang "secara tidak sengaja" menjatuhkan token staging Anda ke produksi.

Jadi dalam panduan ini, kita akan membongkar dunia autentikasi API yang liar:
Dari login gaya kartu ID sederhana seperti Basic Auth hingga tanda tangan terenkripsi tingkat James Bond seperti AWS Signature V4.
Kami akan menunjukkan metode apa yang harus digunakan, kapan menggunakannya, dan yang paling pentingâbagaimana tidak secara tidak sengaja menjadikan API Anda sebagai buffet semau-maunya bagi peretas.
Pakailah sabuk pengaman. Kami akan menjadikan endpoint Anda seperti Fort Knox.
Dunia Liar Autentikasi API
1. Klub Anak Keren: Metode Autentikasi Modern (Gunakan ini jika Anda membangun apa pun dari dekade ini)
Metode Autentikasi | Kapan Menggunakan | TL;DR |
---|---|---|
Token Bearer | Pengguna yang masuk, token akses OAuth 2 | Kartu keanggotaan gymâkeluarkan dan Anda masuk |
JWT Bearer | SSO, MikroserĐ˛Đ¸Ń | Tempat pengenal pintarâdilengkapi dengan nama, foto, dan tanggal lahir |
OAuth 2.0 | Login pihak ketiga (GitHub, Google...) | Pengaman bertanya pada teman kaya Anda (Google) apakah Anda cukup keren untuk masuk |
2. Geng "Tua Tapi Emas": Basic dan Autentikasi Legacy (Terbaik untuk penggunaan internal atau MVP yang bos minta kemarin)
Metode Autentikasi | Kapan Menggunakan | TL;DR |
---|---|---|
Autentikasi Dasar | Alat internal, skrip otomatis | "Halo, saya John, kamar 502"âmengirim kredensial Anda dalam Base64, bukan enkripsi |
Autentikasi Digest | Sistem lama, keamanan sederhana | Seperti berbisik kata sandi Anda melalui modulator suara |
Kunci API | API publik, pelacakan kuota pengguna | Kartu kunci hotelâmudah dicopy, tetapi menyelesaikan pekerjaan |
3. Geng Fort Knox: Keamanan Tertanda & Tersegel (Jika Anda paranoid atau di bidang fintech)
Metode Autentikasi | Kapan Menggunakan | TL;DR |
---|---|---|
OAuth 1.0 | Twitter v1, API legacy | Birokrasi pada tingkat tertinggiâtanda tangan, timestamp, nonce, semuanya |
Hawk | Komunikasi REST-ke-REST aman | Seperti menandatangani setiap pengiriman untuk membuktikan tidak ada yang mengutak-atiknya |
Tanda Tangan AWS | Memanggil layanan AWS (S3, Lambda...) | Memerlukan cincin dekoder rahasia, sihir timestamp, dan sihir AWS |
Akamai EdgeGrid | API di balik benteng Akamai | Gerbang besi CDNâtidak akan masuk tanpa gulungan suci (header yang ditandatangani) |
4. Urusan Internal: Autentikasi Proprietary dan Enterprise (Untuk setup korporat dan nostalgia Windows)
Metode Autentikasi | Kapan Menggunakan | TL;DR |
---|---|---|
Autentikasi NTLM | Intranet, tanah perusahaan Windows | Geser lencana perusahaan Anda, sapa resepsionis (Active Directory) |
ASAP (Atlassian) | Jira, Confluence, CI/CD di tumpukan Atlassian | Lulusan VIP internal Atlassian, berbasis JWT dan cepat |
5. Alat Pengujian & Shortcut Pengembang (Karena mengetik token 100 kali itu menjengkelkan)
Metode Autentikasi | Kapan Menggunakan | TL;DR |
---|---|---|
Mewarisi dari induk | Pengujian koleksi API | Seperti memakai gelang mall-wideâsatu setup, banyak toko |
Tidak Ada Autentikasi | API publik, tahap awal pengembangan | "Silakan semua orang"âtidak diperlukan ID |
Penjelajahan Mendalam Metode Autentikasi â Dengan Perumpamaan
1. Autentikasi Dasar â Nama Pengguna & Kata Sandi Klasik
Perumpamaan: Seperti memberi tahu pengawal keamanan, "Saya John dari apartemen 502," dan mereka membiarkan Anda masuk.
Fitur Utama:
- Mengirimkan nama pengguna dan kata sandi Anda (dikodekan Base64) dalam setiap permintaan
- Sangat sederhana, tetapi tidak amanâkredensial dapat dengan mudah diretas
Kapan menggunakan: Di lingkungan terpercaya (mis. jaringan internal atau pengujian)
Terbaik untuk: Sistem internal, alat tim kecil
Contoh Permintaan:
GET /api/data HTTP/1.1
Authorization: Basic am9objpwYXNzd29yZA== # Base64 dari john:kata_sandi
Contoh Python:
import requests
from requests.auth import HTTPBasicAuth
requests.get('https://api.example.com/data ', auth=HTTPBasicAuth('john', 'kata_sandi'))
2. Token Bearer â Akses Pass Sederhana
Perumpamaan: Seperti menggunakan kartu keanggotaan gymâtidak ada yang memeriksa nama Anda, hanya validitas kartu.
Fitur Utama:
- Token mewakili sesi Anda
- Tidak membawa informasi penggunaâhanya membuktikan Anda diberi izin
Kapan menggunakan: Setelah login, untuk mengakses data pengguna tertentu
Terbaik untuk: Akses API yang autentikasi setelah login
Contoh Permintaan:
GET /api/profil HTTP/1.1
Authorization: Bearer eyJhbGciOiJIUzI1NiIsIn...
Contoh JavaScript (Sisi Depan):
fetch('/api/profil', {
headers: {
'Authorization': 'Bearer YOUR_TOKEN_HERE'
}
})
3. Pemegang JWT â Tempat Pengenal Pintar
Perumpamaan: Seperti kartu ID yang menunjukkan nama, foto, dan peran Andaâbukan hanya akses, tetapi juga membawa informasi.
Fitur Utama:
- Token mandiri dengan data pengguna (JSON Web Token)
- Tidak perlu mengakses basis data setiap kali
Kapan menggunakan: Untuk mikroserвиŃ, SSO, aplikasi tanpa status
Terbaik untuk: Mikroser-vis, Single Sign-On
Muatan Token:
{
"sub": "user123",
"role": "admin",
"exp": 1710000000
}
Contoh Node.js:
const jwt = require('jsonwebtoken');
const token = jwt.sign({ user: 'john' }, 'secret', { expiresIn: '1h' });
fetch('/api/data', {
headers: {
Authorization: `Bearer ${token}`
}
});
4. Kunci API â Kartu Kunci Kamar Hotel
Perumpamaan: Anda memerlukan kartu kunci untuk masuk ke kamar hotel Anda.
Fitur Utama:
- String unik untuk mengidentifikasi pemanggil
- Bisa dilewatkan melalui header, query, atau body
Kapan menggunakan: Untuk kontrol akses sederhana atau pelacakan penggunaan
Terbaik untuk: API publik, pelacakan penggunaan platform
Contoh Header:
GET /api/berita HTTP/1.1
x-api-key: abc123456789
Contoh String Pertanyaan:
GET /api/berita?apikey=abc123456789
5. OAuth 2.0 â Login Pihak Ketiga Standar
Perumpamaan: Anda login ke Paypal dengan akun GoogleâGoogle memberikan jaminan identitas Anda.
Fitur Utama:
- Untuk akses terdelegasikan ke data pengguna
- Mendukung berbagai alur (kode otorisasi, kata sandi, kredensial klien, dll.)
Kapan menggunakan: Login sosial atau integrasi antar-perusahaan
Terbaik untuk: Login pihak ketiga dan akses terdelegasikan
Alur Kode Otorisasi Singkat:
- Pengguna dialihkan ke halaman otorisasi
- Mendapatkan
kode
- Server menukarkan
kode
dengan token akses:
POST https://oauth.example.com/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=abc123&client_id=xxx&client_secret=yyy
- Gunakan token untuk mengakses data:
GET /user/profil
Authorization: Bearer ACCESS_TOKEN_HERE
6. OAuth 1.0 â Metode Sekolah Lama
Perumpamaan: Anda memerlukan tanda tangan pribadi dan stempel perusahaanâlangkah tambahan untuk integritas.
Fitur Utama:
- Permintaan harus ditandatangani (Tanda Tangan)
- Aman tetapi kompleks
Kapan menggunakan: Ketika API hanya mendukung OAuth 1.0 (mis. Twitter)
Terbaik untuk: API legacy seperti Twitter
Header Otorisasi:
Authorization: OAuth oauth_consumer_key="kunci",
oauth_nonce="acak",
oauth_signature="hmac_sha1",
...
Contoh Python:
from requests_oauthlib import OAuth1
auth = OAuth1('YOUR_KEY', 'YOUR_SECRET', ...)
requests.get('https://api.twitter.com/1.1/statuses/home_timeline.json ', auth=auth)
7. Autentikasi Digest â Kata Sandi Tersembunyi
Perumpamaan: Seperti menyebutkan nomor ID Anda melalui perubahan suaraâlebih aman daripada berteriak.
Fitur Utama:
- Lebih aman dari Autentikasi Dasar (menambahkan garam dan hashing)
- Masalah kompatibilitas
Kapan menggunakan: Sistem legacy yang memerlukan nama pengguna + kata sandi tetapi menginginkan lebih aman
Terbaik untuk: Backend enterprise lama
Contoh Python:
from requests.auth import HTTPDigestAuth
requests.get('https://example.com/api ', auth=HTTPDigestAuth('user', 'pass'))
8. Hawk â Pengiriman Tertanda
Perumpamaan: Seperti menandatangani setiap pengiriman, termasuk isinyaâmemastikan tidak ada yang mengutak-atiknya.
Fitur Utama:
- Tanda tangan HMAC melindungi integritas permintaan
- Kata sandi tidak pernah terbuka
Kapan menggunakan: API antar-layanan atau ketika Anda memerlukan integritas pesan
Terbaik untuk: API service-ke-service keamanan tinggi
Contoh Node.js:
const hawk = require('@hapi/hawk');
const kredensial = {
id: 'id_pengguna',
kunci: 'kunci_rahasia',
algoritma: 'sha256'
};
const { header } = hawk.client.header('https://api.example.com/sumber daya ', 'GET', { kredensial });
fetch('https://api.example.com/sumber daya ', {
headers: { Authorization: header }
});
9. Tanda Tangan AWS â Format Resmi Amazon
Perumpamaan: Mengunjungi Kepala AWS? Anda memerlukan format undangan resmi mereka.
Fitur Utama:
- Tanda tangan permintaan yang ketat (dengan timestamp, header, region, dll.)
- Wajib untuk layanan AWS
Kapan menggunakan: Interaksi dengan API AWS (S3, Lambda, dll.)
Terbaik untuk: Akses layanan AWS
Contoh Python:
import boto3
s3 = boto3.client('s3', aws_access_key_id='AKIA...', aws_secret_access_key='...')
s3.list_buckets()
SDK AWS menangani pembuatan tanda tangan untuk Anda.
10. Autentikasi NTLM â Lencana Internal Windows
Perumpamaan: Anda menggeser ID perusahaan Anda di gerbang kantorâhanya jaringan internal.
Fitur Utama:
- Autentikasi domain Windows
- Berfungsi dengan sistem internal legacy
Kapan menggunakan: Aplikasi enterprise di lingkungan Microsoft
Terbaik untuk: Sistem Windows internal
Contoh Python:
from requests_ntlm import HttpNtlmAuth
requests.get("http://windows-server.local ", auth=HttpNtlmAuth('DOMAIN\\user', 'kata_sandi'))
11. Akamai EdgeGrid â Pengawalan Aman di Skala Besar
Perumpamaan: Sebelum keamanan bandara membiarkan Anda melewati, lulusan Anda harus cocok dengan format aman mereka.
Fitur Utama:
- Mekanisme penandatanganan khusus Akamai
- Memastikan penanganan lalu lintas aman dan dalam skala besar
Kapan menggunakan: Memanggil API yang dilindungi Akamai
Terbaik untuk: API enterprise di balik Akamai
Header Otorisasi:
Authorization: EG1-HMAC-SHA256 client_token=xxx;access_token=yyy;timestamp=...;nonce=...
Contoh Node.js:
const edgegrid = require('akamai-edgegrid');
const eg = new edgegrid('client_token', 'client_secret', 'access_token', 'host');
eg.auth({
path: '/endpoint',
method: 'GET'
});
12. ASAP (Atlassian Service Auth Protocol) â Lencana Karyawan Internal
Perumpamaan: Berpindah dari departemen ke departemen di perusahaan, ID staf Anda memberikan akses secara otomatis.
Fitur Utama:
- Autentikasi service-ke-service berbasis JWT dari Atlassian
- Ditandatangani dengan kunci pribadi
Kapan menggunakan: Panggilan internal di ekosistem Atlassian atau mikroser-vis
Terbaik untuk: Layanan internal Atlassian, pipeline CI/CD
Contoh Otorisasi:
Authorization: Bearer eyJraWQiOiJhc2FwS2V5IiwidHlwIjoiSldUI...
13. Mewarisi dari Induk â Satu Login untuk Mengatur Semuanya
Perumpamaan: Masuk ke mall utama dengan lulusan, dan semua toko di dalamnya membiarkan Anda melalui tanpa pemeriksaan ulang.
Fitur Utama:
- Permintaan anak mewarisi otorisasi dari konfigurasi induk
Kapan menggunakan: Alat seperti EchoAPI, di mana Anda menguji banyak endpoint dengan otorisasi yang sama
Terbaik untuk: Alat pengujian API (koleksi EchoAPI)
Bagaimana cara kerjanya: Setel otorisasi sekali pada level koleksi, permintaan anak secara otomatis menggunakan itu
Koleksi induk menyetel Token Bearer â Semua permintaan secara otomatis mewarisi
14. Tidak Ada Autentikasi â Terbuka untuk Semua
Perumpamaan: Seperti taman publikâtidak ada ID, tidak ada tiket, hanya masuk saja.
Fitur Utama:
- Tidak diperlukan autentikasi
Kapan menggunakan: Data publik, stub pengembangan, atau endpoint pemeriksaan kesehatan
Terbaik untuk: API publik, lingkungan pengembangan
GET https://api.weatherapi.com/v1/saat_ini.json?q=Beijing
Bonus: Men-debug Semua Ini Tanpa Menangis? Coba EchoAPI
Celah dengan token, header, dan tanda tangan kryptis? EchoAPI membuat debug API seperti minum kopi daripada menulis skrip curl 500 baris.
Siap untuk Dunia Nyata: Baik Anda memanggil GitHub atau blop warisan internal, EchoAPI mendukung Anda
Pengujian Terpadu: Satu tempat untuk menguji semuanya mulai dari Bearer hingga Tanda Tangan AWS
Disetujui Perusahaan: Dari NTLM hingga Akamai EdgeGrid, ia menangani yang besar
Debug Cepat: Simulasikan login, alur autentikasi, panggilan layananâtidak ada lagi salin-tempel header manual yang menyiksa
Jika Anda ingin mempelajari lebih lanjut tentang metode enkripsi, silakan cari di Blog EchoAPI.