Middleware: Autentikasi API Key

Melindungi endpoint dengan header X-API-Key dan menolak request tanpa kunci dengan 401 Unauthorized.

Part 12 dari 17 ± 30 menit Gratis

Siapa yang boleh mengakses API?

Endpoint yang mengubah data (POST, PUT, DELETE) sebaiknya tidak terbuka untuk semua orang. Bentuk perlindungan paling sederhana adalah API key: kunci rahasia yang dikirim client lewat header setiap request.

curl -H "X-API-Key: rahasia123" http://localhost:8080/secret

Membaca header

got := r.Header.Get("X-API-Key")   // "" bila header tidak dikirim

Middleware penjaga

Prinsipnya sama dengan logging, tetapi kali ini middleware boleh menghentikan request:

func APIKeyAuth(key string, next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        if r.Header.Get("X-API-Key") != key {
            writeError(w, http.StatusUnauthorized, "API key tidak valid")
            return                      // berhenti di sini!
        }
        next.ServeHTTP(w, r)            // kunci cocok → lanjut
    })
}
  • 401 Unauthorized — identitas tidak ada atau salah (kunci tidak cocok). Berbeda dengan 403 Forbidden, yaitu identitas dikenal tetapi tidak berhak.
  • return itu wajib. Tanpa return, kode tetap lanjut ke next.ServeHTTP sehingga penjaga tidak berfungsi.
  • Middleware ini menerima key sebagai parameter, jadi kuncinya tidak ditulis keras di dalamnya. Pada aplikasi sungguhan, kunci dibaca dari environment variable, bukan ditulis di kode.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X