"401 Access Denied" ve "403 Forbidden" hata kodları

Bugüne kadar yazmış olduğum bloglar arasında açık ara en çok okunanı HTTP Error 401.2 Unauthorized başlıklı blogum oldu. Bu yazıma nerelerden erişildiğine baktığımda, arama motorlarında 401 hatası ile ilgili aramalar olduğunu gördüm. Bunun üzerine 401 ve 403 hata kodları ile ilgili daha detaylı bilgi vermenin faydalı olabileceğini düşündüm.

HTTP protokolü yanıt kodları

HTTP protokolü gereği, web sunucular, isteğe verecekleri yanıtıla ilgili bir durum kodu gönderirler. Bu kod, başarılı yanıtlarda 200’dür. 300’lü kodlar da başarılı yanıtlardır, ancak istenen içeriğin farklı bir adreste bulunduğu gibi bilgiler içerir. 400 ve daha büyük kodlar ise hata kodlarıdır.

400’den büyük kodları da aslında ikiye ayırabiliriz:

                400-499 arası: Kullanıcı tarafından kaynaklanan hatalar
500 ve yukarısı: Sunucu tarafından kaynaklanan hatalar

Burada IIS 5.0 ve 6.0 tarafından dönülebilecek tüm hata kodlarını alt kodlarıyla beraber bulabilirsiniz.

Bu blogun konusu olan 401 ve 403 hata kodları “kullanıcı tarafından kaynaklanan hatalar” olarak kabul ediliyor. Bu, kullanıcının birşeyleri yanlış yaptığı anlamında değildir. Sadece sorunun, web sunucusu ayarları ile kullanıcının isteği arasındaki uyumsuzluktan kaynaklandığı anlamına gelir.

401 Access denied

401 hata kodu, herhangi bir kaynağa erişimimiz engellendiğinde karşımıza çıkıyor. Bunun çeşitli nedenleri olabilir. Nedeni, alt hata koduna bakarak tespit edebiliriz:

401.1 - Logon failed.
401.2 - Logon failed due to server configuration.
401.3 - Unauthorized due to ACL on resource.
401.4 - Authorization failed by filter.
401.5 - Authorization failed by ISAPI/CGI application.
401.7 – Access denied by URL authorization policy on the Web server.

401.1 ve 401.2 hata kodları, eğer erişmeye çalıştığımız kaynağa “anonymous” olarak erişim engellenmişse karşımıza çıkar. Daha önce bir blogumda da bahsettiğim gibi, HTTP protokolünün yapısı gereği bir web sunucuya gelen her “ilk” istek “anonymous”tur. Yani kullanıcı bilgisi içermez. Eğer istediğimiz kaynak kimlik denetimi gerektiriyorsa web sunucusu bize 401.2 yanıtı dönecektir. Ardından yine protokol gereği bir 401.1 alırız ve üçüncü istekte eğer kimlik denetimi başarılı olursa 200 yanıtı ile istek tamamlanır.

Yukarıdaki yapı gereği, 401.2 ve 401.1 yanıtları genelde ortada bir sorun olduğu anlamına gelmez. Ancak, üçüncü istekte eğer kimlik denetimi başarısız olursa veya istediğimiz kaynağa erişim hakkımız yoksa duruma göre yine bir 401 hatası alırız.

403 Forbidden

403 kodları, 401 kodlarından farklı olarak yasaklılık bildirir. Bu kodların da alt kodları vardır ve aslında yeterince açıklayıcıdırlar:

403.1 - Execute access forbidden.
403.2 - Read access forbidden.
403.3 - Write access forbidden.
403.4 - SSL required.
403.5 - SSL 128 required.
403.6 - IP address rejected.
403.7 - Client certificate required.
403.8 - Site access denied.
403.9 - Too many users.
403.10 - Invalid configuration.
403.11 - Password change.
403.12 - Mapper denied access.
403.13 - Client certificate revoked.
403.14 - Directory listing denied.
403.15 - Client Access Licenses exceeded.
403.16 - Client certificate is untrusted or invalid.
403.17 - Client certificate has expired or is not yet valid.
403.18 - Cannot execute requested URL in the current application pool.
403.19 - Cannot execute CGIs for the client in this application pool.
403.20 - Passport logon failed.

Bu tür sorunları nasıl gideririz?

Yukarıda da belirttiğim gibi 401.1 ve 401.2 kodları genelde sorun belirtmez. Diğer alt kodlar ve 403 kodlu yanıtlar da, sorunun nedeni hakkında oldukça detay verir. Dolayısıyla, bu tür bir hatayla karşılaştığımız zaman ilk yapmamız gereken şey, alt hata kodunun ne olduğunu tespit etmek olmalıdır. Bunu da en sağlıklı olarak elde edebileceğimiz yer IIS loglarıdır.

Yine daha önceki bir blogumda bahsettiğim araçlardan AuthDiag ve Wfetch, bu tür sorunlarda çokça kullandığımız araçlardır.

Buradaki makalede en çok rastlanan senaryolar ve çözüm yollarını bulabilirsiniz.

CENK ISCAN

Comments

  • Anonymous
    February 19, 2009
    selam bn bilişim teknolojileri web tasarım dalında okuyan bir öğrenciyimHTTP Hatası 403.14 - Forbiddenhata kodu hakkında detaylı bilgi almak istiyorum sizdensamet_nba_92@hotmail.comiletişime geçmenisi meraka beklicem.
  • Anonymous
    February 22, 2009
    Yukarıdaki yazımda vermiş olduğum linkte de görebileceğiniz gibi, 403.14 hatasının açıklaması şudur:403.14 - Directory listing denied.Bunun anlamı, istekte bulunduğumuz klasörde, "default document" olarak tanımlanmış dosya isimlerinden hiçbiri bulunmamaktadır. Bu, index.htm, default.htm, default.asp, default.aspx veya bizim tanımlayacağımız herhangi bir dosya olabilir. Bu sorunu çözmek için, ya bizim giriş sayfamızın adını IIS'te tanımlamamız, veya direkt olarak var olan bir dosyayı ismiyle istemek gerekir. İlgili tanımı nasıl yapabileceğinizi aşağıdaki linkte bulabilirsiniz:http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/dc6eb1b4-9028-4308-9935-52b64edfad36.mspx?mfr=true
  • Anonymous
    May 19, 2009
    401.3 hata kodunun sebebini bir türlü çözemiyoum :(
  • Anonymous
    May 19, 2009
    Bu hata kodunun açıklaması, yukarıda da görebileceğiniz üzere "Unauthorized due to ACL on resource" şeklindedir. Yani ilgili içeriğin NTFS izinleri seviyesinde bir sorun vardır. Eğer bunu çözemiyorsak Process Monitor isimli araçla bir inceleme yapıp, tam olarak nerede nasıl bir izin gerektiğini tespit edebilirsiniz.
  • Anonymous
    April 28, 2010
    E-Okula not girişi yapmak istiyorum.Fakat Directory Listing Denied yazısı geliyor. Ne yapmak zorundayım?
  • Anonymous
    October 14, 2010
    eğer hata tam olarak “HTTP Hatası 403.14 – ForbiddenWeb sunucusu bu dizinin içindekileri listelemeyecek şekilde yapılandırılmış.” ise  adım adım resimli anlatımı www.bilyaz.com/.../http-hatasi-40314-forbidden.html
  • Anonymous
    April 16, 2014
    merhaba, telefonum bir süredir internete girdimde forbidden hatası veriyor ne yapmalıyım?