Eki
24
2011

.htacces ile zahmetsiz sunucu konfigürasyonu: Kimlik doğrulaması, yetkilendirme ve htpasswd ile şifreleme

Kullanıcı dostu, sunucu konfigürasyon aracı .htaccess dosyası ile yapılabilinecekler arasında kimlik doğrulaması ve yetkilendirme işlemleri de yer almaktadır. Kimlik doğrulaması ve yetkilendirme işlemleri aynı zamanda, bir önceki yazıda işlenen dosya ve dizinlere erişim konusunda da kullanılan bir yöntemdir.

Site dizin yapısı içinde, bazı dizin/dizinlere erişimi, belirleyeceğimiz kullanıcı adı ve parola bilgisine sahip ziyaretçilerle sınırlamak isteyebiliriz. Bu noktada parola korumalı kimlik doğrulaması ve yetkilendirme işlemleri, bu ihtiyacımızı karşılayacaktır.

 

htpasswd

Parola korumalı kimlik doğrulaması ve yetkilendirme işlemi için, yetkilendirilecek kullanıcı ve ona ait parolanın saklanacağı bir dosyaya ihtiyacımız var. Bu dosyayı oluşturmak için Apache sunucusu bize htpasswd aracını sunuyor. Bu araç, kimlik doğrulaması için kullanıcı ismi ve parolalarını saklayacak düz metin dosyalarını oluşturuyor ve belirlenen parolaları şifrelemek için Windows altında MD5 algoritmasını(Apache şifreleme için unix sistemlerde crypt() yordamını kullanır) kullanıyor.

WampServer ve Windows özelinde, bu dosyanın benim sistemimdeki tam yolu(burada yer alan yol bilgisinin program ve sürüm farkına göre değişebileceğini unutmayın) şu şekildedir: C:\wamp\bin\apache\Apache2.2.17\bin\htpasswd.exe

Windows komut satırı ekranında, aşağıdaki komutu çalıştırdığımda “C:\wamp\bin\apache\Apache2.2.17” dizini altında, “yonetici” isminde bir kullanıcı için kullanıcı parolasını, MD5 algoritmasıyla şifrelenmiş olarak saklayan “sifre” isminde, uzantısız bir dosya oluşacaktır.

C:\wamp\bin\apache\Apache2.2.17\htpasswd.exe -c C:\wamp\bin\apache\Apache2.2.17\sifre yonetici

Yukarıdaki komutta, şifreleme aracı olan htpasswd.exe‘ye geçirilen –c parametresi(diğer seçenekler için bkz: htpasswd), parola dosyasını oluşturma, parola dosyası mevcut ise içeriğinin silinip, girilen parola ile yeniden yazılmasını sağlamaktadır. Bu parametrenin ardından gelen parametre ise, oluşturulacak dosyanın adını ve yol bilgisini içermektedir. Daha sonra gelen parametre ise bu dosyanın sakladığı parolanın ait olduğu kullanıcı ismini içermektedir.

Enter dediğimizde htpasswd.exe bizden bir şifre belirlememizi isteyecek, ardından bu şifreyi doğrulamamızı isteyecek, doğrulandıktan sonra da ilgili dosya, belirttiğimiz konumda oluşacaktır.

New password: *****
Re-type new password: *****
Adding password for user yonetici

Dolayısıyla bu işlemler sonucunda “yonetici” kullanıcına ait parola dosyası “C:\wamp\bin\apache\Apache2.2.17” dizini altında, “sifre” ismiyle oluşturulacaktır. Burada şunu da belirtmeliyim ki, sunucu üzerinde parola dosyalarınızı belge kök dizini altında saklamak doğru bir davranış olmaz. Parola dosyalarınızı belge kök dizini dışında oluşturmanız, internet üzerinden bu dosyaya erişilememesini sağlayacak ve böylece dosya içeriğinin elde edilmesi engellenmiş olacaktır.

Parola dosyamızı oluşturduğumuza göre, geriye sunucumuzu .htaccess dosyasıyla hangi dizin/dizinlerde kimlik doğrulaması ve yetkilendirme yapması konusunda yapılandırmak kalıyor. Bu noktada, .htaccess dosyasına dair ilk yazıda adı geçen, Apache HTTP sunucusunun ana yapılandırma dosyası httpd.conf‘ta yer alan AllowOverride satırının

AllowOverride All

ya da

AllowOverride AuthConfig

şeklinde olması gerekliliğinin altını çizelim.

AuthType Basic
AuthName "Private Domain"
AuthBasicProvider file
AuthUserFile C:/wamp/bin/apache/Apache2.2.17/sifre
Require user yonetici

AuthType yönergesi, kimlik doğrulamada kullanılacak yöntemin “Temel/Basic” olduğunu deklare ediyor. Kimlik doğrulama esnasında gönderilen parolanın şifrelenmesini istiyorsak bu yöntemi mod_ssl ile kullanmalıyız.

AuthName yönergesi ile, kimlik doğrulamada kullanılacak saha belirtilir. AuthName ile belirtilen saha ismi, ziyaretçiye gösterilen kullanıcı adı ve parola diyalog kutusunda görüntülenir. Bir saha isminde kimlik doğrulamasını başarıyla geçmiş istemci, aynı saha isimli diğer alanlarda da kimlik doğrulamasını geçmiş olarak işlem görecektir.

Bunu örneklemek gerekirse, yukarıdaki .htacces dosyasının www.siteadi.com/admin ve www.siteadi.com/private dizinlerinde yer aldığını düşünelim. www.siteadi.com/admin dizinini ziyaret edip, kimlik doğrulamasını geçen istemci, www.siteadi.com/private dizini ziyaret ettiğinde kimlik doğrulamasını geçmiş gibi işlem görecektir.

AuthBasicProvider yönergesinin default değeri file olduğundan, esasta kullanımı isteğe bağlıdır. Ancak, kimlik doğrulaması için burada kullanılan mod_auth_basic modülü dışında moduller kullanıldığında(örneğin mod_authn_dbm, mod_authn_dbd) bu yönergeyi kullanmak zorunludur.

AuthUserFile yönergesi, htpasswd ile oluşturduğumuz parola dosyasının konumunu belirtmek için kullanılır.

Require yönergesi ise, sunucunun AuthName ile belirtilen alan/sahasına erişimine izin verilen kullanıcıları ayarlamak için kullanılır.

Yukarıda, içerdiği yönergelerin ne amaçla kullanıldığını kısaca anlatmaya çalıştığım bu .htaccess dosyasının yer aldığı dizin/dizinlerde kimlik denetimi gerçekleşecek ve ziyaretçiden kullanıcı adı ve parolasını girmesi istenecektir.

Yorum yapabilirsiniz..

En son haber ve ücretsiz eğitimlere ulaşmak için üye olabilirsiniz