Belajar Traefik - Authentication Middlewares
Episode 9 of 31

Belajar Traefik - Authentication Middlewares

Episode ini membahas middleware autentikasi Traefik: BasicAuth dengan password ber-htpasswd, DigestAuth, ForwardAuth yang mendelegasikan autentikasi ke layanan eksternal seperti Authelia, Authentik, dan OAuth2 Proxy, serta IPWhiteList untuk membatasi akses dari alamat IP tertentu.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Melindungi layanan dari akses liar adalah kebutuhan pertama setiap deployment. Episode 9 membahas empat middleware autentikasi Traefik: BasicAuth, DigestAuth, ForwardAuth, dan IPWhiteList — masing-masing dengan kekuatan dan trade-off yang berbeda.

BasicAuth sederhana dan cukup untuk banyak kasus internal. ForwardAuth adalah yang paling kuat: autentikasi didelegasikan ke layanan eksternal seperti Authelia, Authentik, atau OAuth2 Proxy, sehingga mendukung SSO, TOTP, dan kebijakan terpusat. Di akhir episode, kalian akan tahu kapan harus memakai yang mana.

BasicAuth

Username, Password, dan htpasswd

BasicAuth meminta kredensial via header Authorization bertipe Basic. Password tidak boleh disimpan plaintext — Traefik menerima hash yang dibuat dengan htpasswd. Bangkitkan hash dengan perintah htpasswd berikut:

Membuat hash password htpasswd
htpasswd -nbB admin "rahasia-super"
docker run --rm httpd:alpine htpasswd -nbB admin "rahasia-super"

Outputnya berbentuk admin:$2y$05$.... Tempelkan hasil tersebut ke dalam middleware:

Middleware BasicAuth
http:
  middlewares:
    admin-auth:
      basicAuth:
        users:
          - "admin:$2y$05$0UvReaDF8s0BbQpqBFBp8e1gV6Q2Y0hH9o5QyTq3a4j7kLmZxS2C"
        realm: "Admin Zone"
        removeHeader: true
  • users: daftar username:hash; beberapa pengguna dipisahkan baris.
  • realm: teks yang ditampilkan browser pada dialog login.
  • removeHeader: true: menghapus header Authorization sebelum diteruskan ke backend — mencegah kredensial bocor ke aplikasi.

Router yang memakai middleware ini:

Router dengan BasicAuth
http:
  routers:
    admin:
      rule: "Host(`admin.localhost`)"
      entrypoints:
        - web
      service: admin-svc
      middlewares:
        - admin-auth
  services:
    admin-svc:
      loadBalancer:
        servers:
          - url: "http://10.0.0.50:8080"

DigestAuth

Autentikasi Tampa Kirim Password

DigestAuth menggunakan challenge-response: password tidak pernah dikirim dalam bentuk teks, hanya sebuah digest dari kombinasi nilai. Traefik menerima hash MD5 username:realm:password sebagai ganti password plaintext:

Membuat hash MD5 digest
printf "admin:Admin Zone:rahasia-super" | md5sum
Middleware DigestAuth
http:
  middlewares:
    dig-auth:
      digestAuth:
        users:
          - "admin:c5b0c4f1a6d4c6e5d86ac4a5b2f3a2b3"
        realm: "Digest Zone"
        removeHeader: true

DigestAuth lebih aman dari BasicAuth dalam hal transfer kredensial, tapi implementasinya lebih jarang didukung klien modern dan kompleks untuk dioperasikan. Untuk sebagian besar kasus, BasicAuth atau ForwardAuth adalah pilihan yang lebih masuk akal.

ForwardAuth

Mendelegasikan ke Layanan Eksternal

ForwardAuth mengirim request ke URL layanan autentikasi. Jika layanan merespons 2xx, akses diizinkan; jika 401 atau 403, request ditolak. Ini pintu menuju SSO enterprise:

Middleware ForwardAuth ke Authelia
http:
  middlewares:
    auth-authelia:
      forwardAuth:
        address: "http://authelia:9091/api/authz/forward-auth"
        authResponseHeaders:
          - Remote-User
          - Remote-Groups
        trustForwardHeader: true
  • address: URL endpoint pengecekan layanan autentikasi.
  • authResponseHeaders: header dari response layanan auth yang diteruskan ke backend, misalnya Remote-User.
  • trustForwardHeader: true: memercayai header X-Forwarded-* dari proxy di depan — hanya aktifkan jika Traefik berada di belakang proxy tepercaya.

Integrasi Populer

Pola ini dipakai oleh layanan populer:

  • Authelia: full-featured SSO dengan TOTP, u2f, dan LDAP backend.
  • Authentik: identitas terpadu dengan flow authorization yang dapat dikustomisasi.
  • OAuth2 Proxy: gerbang OAuth untuk Google, GitHub, GitLab, dan lainnya.
  • Custom service: API kalian sendiri cukup mengembalikan status code.

Alur ForwardAuth adalah salah satu pola paling umum pada setup homelab Traefik kelas enterprise.

IPWhiteList

Membatasi Berdasarkan Alamat Sumber

Terkadang yang diperlukan bukan login, tapi membatasi dari mana request boleh datang. IPWhiteList menerima atau menolak berdasarkan IP sumber, dengan dukungan CIDR:

Middleware IPWhiteList
http:
  middlewares:
    internal-only:
      ipWhiteList:
        sourceRange:
          - "192.168.1.0/24"
          - "127.0.0.1/32"

Semua request dari luar range di atas ditolak dengan 403. Jika Traefik berada di belakang proxy lain, IP sumber yang dilihat adalah IP proxy — saat itulah kalian butuh pengaturan ipStrategy dengan depth untuk menghitung berapa hop proxy yang dilewati sebelum menemukan IP asli klien:

IPStrategy dengan depth
http:
  middlewares:
    vpn-only:
      ipWhiteList:
        sourceRange:
          - "10.8.0.0/16"
        ipStrategy:
          depth: 2

Nilai depth: 2 memberitahu Traefik membaca dua hop pertama dari header X-Forwarded-For untuk menemukan IP klien sebenarnya. Kombinasikan IPWhiteList dengan BasicAuth untuk lapisan pertahanan berlapis.

Warning

Jangan mengandalkan IPWhiteList sebagai satu-satunya keamanan. Alamat IP mudah dipalsukan jika jaringan belum dikonfigurasi dengan benar — pakai sebagai salah satu lapisan, bukan tembok tunggal.

Penutup

Inti yang harus dibawa pulang:

  • BasicAuth sederhana; buat hash password dengan htpasswd -nbB.
  • removeHeader: true mencegah kredensial bocor ke backend.
  • DigestAuth mengirim digest, bukan password, tapi jarang dipakai klien modern.
  • ForwardAuth mendelegasikan autentikasi ke Authelia, Authentik, OAuth2 Proxy, atau layanan custom.
  • IPWhiteList membatasi akses per alamat IP atau range CIDR.
  • Kombinasikan beberapa lapisan autentikasi untuk pertahanan yang solid.

Di episode 10 selanjutnya kita akan membahas headers dan security middlewares — middleware headers untuk custom header, rangkaian security headers seperti CSP, X-Frame-Options, dan HSTS, konfigurasi CORS lengkap, serta cara mengaktifkan force HTTPS. Setelah ini, layanan kalian akan memenuhi standar keamanan dasar web modern.