"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 (7)

  1. Anonymous says:

    selam bn bilişim teknolojileri web tasarım dalında okuyan bir öğrenciyim

    HTTP Hatası 403.14 – Forbidden

    hata kodu hakkında detaylı bilgi almak istiyorum sizden

    samet_nba_92@hotmail.com

    iletişime geçmenisi meraka beklicem.

  2. CenkIscan says:

    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

  3. Anonymous says:

    401.3 hata kodunun sebebini bir türlü çözemiyoum 🙁

  4. CenkIscan says:

    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.

  5. Anonymous says:

    E-Okula not girişi yapmak istiyorum.Fakat Directory Listing Denied yazısı geliyor. Ne yapmak zorundayım?

  6. Anonymous says:

    eğer hata tam olarak “HTTP Hatası 403.14 – Forbidden

    Web sunucusu bu dizinin içindekileri listelemeyecek şekilde yapılandırılmış.” ise  adım adım resimli anlatımı http://www.bilyaz.com/…/http-hatasi-40314-forbidden.html

  7. Anonymous says:

    merhaba, telefonum bir süredir internete girdimde forbidden hatası veriyor ne yapmalıyım?