Basic Auth dan Digest Auth dengan Traefik

Basic Auth dan Digest Auth adalah dua metode otentikasi yang digunakan dalam protokol HTTP untuk membatasi atau mengamankan akses dari pengguna yang tidak dikenal ke situs atau aplikasi dengan menampilkan popup pada browser berupa form untuk memasukan user dan password yang valid.

Basic Auth berbeda dengan Digest Auth, Basic Auth menggunakan enkripsi sederhana (base64) sedangkan Digest Auth menggunakan enkripsi yang lebih kuat dengan menggunakan fungsi hash sehingga menjadikannya lebih aman walau digunakan dalam koneksi HTTP.

Jika Anda lebih ingin menggunakan Basic Auth, disarankan untuk digunakan hanya dalam koneksi HTTPS yang aman.

Basic Auth

Generate dengan command htpasswd atau bisa melalui website htpasswd generator.

htpasswd -nb user password

Selanjutnya jalankan container dengan tambahan label traefik.http.middlewares.secure.basicauth.users=<output-htpasswd>

docker run -dit --name web1 \
-l web1 \
--label 'traefik.enable=true' \
--label 'traefik.http.routers.web1.rule=Host(`example.com`)' \
--label 'traefik.http.routers.web1.entrypoints=web' \
--label 'traefik.http.services.web1.loadbalancer.server.port=80' \
--label 'traefik.http.middlewares.secure.basicauth.users=admin:$apr1$uh086r5d$ZxLTyFgJyG5CYEsrdbk4B0' \
--label 'traefik.http.routers.web1.middlewares=secure' \
--label 'traefik.http.routers.web1.service=web1' \
nginxdemos/hello

Jika ingin menambahkan banyak user gunakan label traefik.http.middlewares.test-auth.basicauth.usersfile=/path/to/my/usersfile

Test akses http://example.com melalui browser Anda.

Digest Auth

Buat file pass.txt lalu generate dengan command htdigest dan masukan passwordnya.

htdigest -c pass.txt traefik username

Anda juga dapat generate melalui website htdigest generator. {: .prompt-tip }

Selanjutnya jalankan container dengan menambahkan label traefik.http.middlewares.test-auth.digestauth.user=name:realm:encoded-password

docker run -dit --name web1 \
-l web1 \
--label 'traefik.enable=true' \
--label 'traefik.http.routers.web1.rule=Host(`example.com`)' \
--label 'traefik.http.routers.web1.entrypoints=web' \
--label 'traefik.http.services.web1.loadbalancer.server.port=80' \
--label 'traefik.http.middlewares.secure.digestauth.user=admin:traefik:9bfbed194484409dd8ec5868d8fb2bcb' \
--label 'traefik.http.routers.web1.middlewares=secure' \
--label 'traefik.http.routers.web1.service=web1' \
nginxdemos/hello

Jika ingin menambahkan banyak user gunakan label traefik.http.middlewares.test-auth.digestauth.usersfile=/path/to/my/usersfile

Test akses http://example.com melalui browser Anda.