TÜBİTAK » ULAKBİM » ULAKBİM Ana Sayfa İletişim / Bilgi Edinme  |  Site Haritası  |  English 
ULAKBİM
 
ULAKBİM Ana Sayfa
Ulusal Akademik Ağ
Cahit Arf Bilgi Merkezi
ULAKBİM Hakkında
Sıkça Sorulan Sorular
İş/Staj Olanakları
İletişim
Site Haritası
Arama

Hızlı Erişim

ULAKBİM Üye - Giriş
 
Kullanıcı: 
Şifre: 
   [ ? ]
Yeni Üye | Şifremi Unuttum!
[Güvenlik Sorunu Yaşıyorum!]
PHP ile Doğrulama (Authentication)

HTTP-1.1 protokolü iki tür doğrulamayı desteklemektedir:

  • Basic authentication, kullanıcı adı ve şifresinin açık olarak iletildiği metoddur.
  • Digest authentication, kullanıcı şifresi, browser tarafından sunucunun gönderdiği bazı parametreler ile birlikte md-5 hash algoritmasına sokulup şifrelenerek sunucuya gönderilir. Basic authenticationa göre daha güvenlidir. Ancak çoğu browser heniz desteklememektedir. (IE-5.0 destekliyor ancak, Netscape 4.7 desteklemiyor. Hatta Mozilla 5.0 ekibi digest authentication metodunu browsere eklemek için hala uğraşıyor.)

Normalde Web sunucularının doğrulama istediği alanlarda '.htaccess' türü dosyalar kullanılmakta, şifreler ise karşılaştırma için metin dosyalarından veya veri tabanından alınmakta idi. PHP, bize aynı işlevleri çok daha esnek bir şekilde gerçekleştirme imkanı sağlıyor.

PHP ile HTTP doğrulaması yapabilmek için PHP'nin modül olarak Apache'ye kurulu olması gerekmektedir. Statik veya DSO modülü olması farketmez. PHP, CGI olarak kurulu ise Apache, PHP'ye doğrulama bilgilerini ($PHP_AUTH_USER, $PHP_AUTH_PW) geçirmeyeceği için kullanmanın bir anlamı olmayacaktır.

  • header fonksiyonu, ile HTML çıktısından önce tarayıcıya header bilgileri gönderilebilir. Web tarayıcısında basic authentication penceresi açtırmak için şu header bilgisi yeterlidir:
    WWW-authenticate:  basic  realm='Örnek Güvenli Alan'
    HTTP/1.0  401  Unauthorized
    

Bu aşamadan sonra browerden gelen kullanıcı adı ve şifresi bilgisi Web sunucusu tarafından PHP scriptine global değişkenler ($PHP_AUTH_USER ve $PHP_AUTH_PW) olarak aktarılır. İşte bu noktada PHP scripti bunları istediği gibi değerlendirip gerekli işlemleri yapabilir veya doğrulama sağlanmamışsa tekrar yukarıdaki header bilgisini göndererek kullanıcı adı ve şifresini tekrar isteyebilir.

Doğrulama sağlayınca artık PHP scriptimiz 401 headeri göndermez. $PHP_AUTH_USER ve $PHP_AUTH_PW globalleri sunucu tarafından set edilmiş olarak hafızada kalır ve aynı tarayıcı kapatılmadığı müddetce gelen diğer requestler için doğrulama penceresi açtırılmaz.

Tarayıcıyı kapatmadan logout olmayı sağlamak için 401 mesajını tekrar göndermek yeterlidir. Kullanıcının logout olması için açılan authentication penceresinden kullanıcı adı ve şifreyi boş geçerek bir kere daha requesti yapması gereklidir.

Doğrulama için gerekli kullanıcı adı ve şifre bilgisi text türü bir dosyadan alınabilir.

ToKat UlakVekil Katalog Ulusal Veri Tabanları EKUAL Belge Sağlama CSIRT TR-GRID IPV6 UBYT
© 2008 TÜBİTAK-ULAKBİM Görüşleriniz