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.

Memahami Autentikasi API: Dari Basic Auth hingga OAuth2 dan JWT

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:

  1. Pengguna dialihkan ke halaman otorisasi
  2. Mendapatkan kode
  3. 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
  1. 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.