بِسْمِ اللهِ الرَّحْمٰنِ الرَّحِيْمِ
Hai teman….
tau ga ternyata kita bisa membatasi akses ke website kita dengan memberikan user dan password
otentifikasi. User dan password ini didapat dari sebuah file yang dibuat dari tool terkenal seperti apache2-utils
.
HTTP basic auth dapat juga dipadukan dengan metode pembatas akses lainnya. Misalnya membatasi akses berdasarkan alamat atau geographical location.
Sek sek bahasanya agak ribet, kita buat mudah aja ya, jadi gini dengan basic auth kita bisa membatasi akses menujut website kita, ketika kita membuka alamat website kita akan muncul popup meminta username dan password nah kalo bener baru dah tuh bisa kebuka isinya, kalo salah maka akan muncul pesan error, like gini:
lucu kaan. 😙
Nah untuk membuatnya kita perlu install tools
nya dulu yaitu:
-
apache2-utils
untuk debian sekeluarga.sudo apt install -y apache2-utils
-
httpd-tools
untuk RedHat sekeluarga.sudo yum install httpd-tools
Buat Passwordnya
-
Untuk membuat password pertama kali menggunakan perintah
htpasswd
diikuti dengan flag-c
lalu pertama dan nama usernya pada argument kedua.sudo htpasswd -c /etc/nginx/.htpasswd batutah
-
Untuk membuat user lain pada file yang sama hilangkan flag
-c
sudo htpasswd /etc/nginx/.htpasswd batutah2
-
Kita bisa memastikan hasilnya dengan melihat isi file yang kita buat tadi.
cat /etc/nginx/.htpasswd
isinya bakal kayak gini
batutah:$apr1$/woC1jnP$KAh0SsVn5qeSMjTtn0E9Q0
batutah2:$apr1$QdR8fNLT$vbCEEzDj7LyqCMyNpSoBh/
Config Server Block Nginx
- Masuk ke lokasi server block yang ingin kita tambahkan
basic auth
nya, lalu tambahkan baris seperti berikut:
server {
...
auth_basic "Administrator’s Area";
auth_basic_user_file /etc/nginx/.htpasswd;
location /public/ {
auth_basic off;
}
}
Untuk menambahkan basic auth pada path tertentu seperti /api/documentation
tujuannya agar ketika mengakses
halaman api documentation harus memasukkan basic auth, dan tidak berimbas pada endpoint API lainnya.
location /api/documentation {
auth_basic "Administrator’s Area";
auth_basic_user_file /etc/nginx/.htpasswd;
try_files $uri $uri/ /index.php?$query_string;
}
Atau seperti ini kalau menggukanan reverse proxy
location /api/documentation {
auth_basic "Administrator’s Area";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
#proxy_set_header X-Forwarded-Proto $schema;
proxy_pass http://127.0.0.1:21180;
}
baris auth_basic
untuk meletakakkan dimana popup akan muncul untuk menanyakan username password.
bisa diletakkan pada baris server atau juga di baris aplikasi
auth_basic_user_file /etc/nginx/.htpasswd;
ini fullpath file basic auth yang kita buat tadi
Udah deh jadi. yeay… 😬
05 Februari 2019
09:37 WIB
Cibubur, Jakarta Timur
DKI Jakarta