HTTP Temel Kimlik Doğrulamasını kullanarak belirli yollar için kimlik doğrulamasını nasıl gerektirebileceğimize bir göz atalım.
Bu işlemlerde ihtiyacımız olan nginx module ve direktiflerin kaynak bilgilerini aşağıda paylaşıyorum.
Temel Kimlik Doğrulama Modülünü Kullanma
HTTP temel kimlik doğrulaması, bir kullanıcının belirli bir URL’ye erişmesine izin vermeden önce bir kullanıcı adı ve parola istememizi sağlar. NGINX’i HTTP temel kimlik doğrulaması ile kurmak için, auth_basic modülünü kullanacağız. Belirli location bloklarının temel kimlik doğrulamasını kullanırken diğerlerinin kullanmadığını belirtebiliriz. Belirli bir HTML dosyasının erişilebilir olmasını engelleyecek yeni bir konum bloğu oluşturalım:
/etc/nginx/conf.d/default.conf
server { listen 80 default_server; server_name _; root /usr/share/nginx/html; location = /admin.html { auth_basic "Login Required"; auth_basic_user_file /etc/nginx/.htpasswd; } error_page 404 /404.html; error_page 500 501 502 503 504 /50x.html; }
Location = /admin.html, birisi /admin.html yoluna giderse ve tam olarak eşleşirse ne olacağını belirleme yapılandırmamızdır. Oradan, bir dizin kullanarak (herhangi bir dizin olur) auth_basic için bir değer belirleyebiliriz ve erişimi olan kullanıcı adı / şifre çiftlerini içeren dosyanın yolunu belirtiriz.
Şimdi erişebileceğimiz admin.html dosyasını oluşturmamız gerekiyor ve şimdi test edersek erişilebilir olacak:
[root] $ echo "<h1>Admin Page</h1>" > /usr/share/nginx/html/admin.html
Parola Dosyası Oluşturma
Yapılandırmamız şu anda geçerli, ancak henüz üzerinde çalışabileceğimiz bir şifre dosyamız yok. .htpasswd dosyamızı oluşturmak için httpd araçlarını yükleyeceğiz:
[root] $ yum install -y httpd-tools
Not: Debian tabanlı bir sistemde bunun yerine apache2-utils paketini kurarsınız.
Bu araçlar kurulduktan sonra artık bizim için kullanıcılarımız için şifrelenmiş şifrelerle bir dosya oluşturabilen htpasswd yardımcı programına erişebiliriz.
Şimdi dosyayı oluşturalım:
[root] $ htpasswd -c /etc/nginx/.htpasswd admin New password: Re-type new password: Adding password for user admin
Oluşturulan bu dosya ile artık NGINX yapılandırmamızı yeniden yüklemeye ve tarayıcımızda kimlik doğrulamamızı test etmeye hazırız.
[root] $ systemctl reload nginx
Şimdi tarayıcıda /admin.html yoluna giderseniz, bir şifre girmeniz istenir.
CURL ile HTTP Temel Kimlik Doğrulamasını kullanma
Yönetici sayfasına tarayıcı olmadan erişmek istiyorsak, curl kullanarak istekteki Yetkilendirme başlığını geçebiliriz. Başlık olmadan istek şu şekilde görünür:
[root] $ curl localhost/admin.html 401 Authorization Required
Curl için -u etiketini kullanırsak, kullanıcı adı ve parolayı a :: ile bölerek geçirebiliriz.
[root] $ curl -u admin:123456Aa localhost/admin.html Admin Page
Başka bir yazımızda görüşmek üzere,