401 Unauthorized

Daha önce de kimlik doğrulama ile ilgili bir yazı yazmıştım. Orada detaylı olarak bahsettiğim gibi, 401 hataları kimlik doğrulama işleminin normal bir parçasıdır. Ancak bazen, her şeyi doğru yaptığımız halde tarayıcı bize kullanıcı adı/şifre sorar ve buna rağmen giriş yapamayız ve 401.1 "Logon failed" hatası alırız.

Bu tür bir sorunun ilk akla gelen nedeni, elbette kullanıcı adı veya şifrenin yanlış olmasıdır. Eğer yetki sorunumuz olsa 401.3 "Unauthorized due to ACL on resource" veya bazı durumlarda da 403 hataları alırdık. Ama kullanıcı adımız ve şifremiz doğru olsa bile 401.1 alabileceğimiz bir senaryo var: Kerberos.

IIS 6.0 (Windows 2003 SP1 sonrası) ve 7.x versiyonlarında "integrated windows authentication" kullandığımızda kullanıcıya hem NTLM hem de Negotiate seçenekleri sunulur. Kullanıcı - aslında tarayıcı - bunlardan duruma göre birini seçer. Tarayıcının ilk tercihi - Intranet uygulamalarında - Negotiate/Kerberos kullanmak yönündedir. Aslında IIS de Kerberos kullanımını default olarak destekler. Ancak burada küçük bir sorun vardır: NTLM kullanmak için hiçbir ekstra ayara gerek olmazken, Kerberos için Domain Controller üzerinde bazı ayarların yapılması gerekmektedir. Bu ayarları yapmadıysak, kullanıcıdan gelecek olan Kerberos bileti IIS'e hiçbir şey ifade etmeyecek ve 401.1 hatası dönecektir.

Bu tür bir problemle karşılaştığımızda, sorunun Kerberos olup olmadığını anlamanın çok basit bir yolu vardır: Internet Explorer'da aşağıdaki seçeneği kaldırmak:

Tools -> Internet Options-> Advanced -> Enable Integrated Windows Authentication

image

İsim biraz yanıltıcı olsa da bunu kaldırmak aslında sadece Kerberos kullanımını engeller, NTLM kullanılmasını sağlar. Eğer bu şekilde bir istekte bulunduğunuzda sorunsuz giriş yapabiliyorsanız, o zaman sorun kesin olarak Kerberos ayarlarındadır.

NOT 1: Bu ayarı değiştirdikten sonra IE'yi kapatıp yeniden açmak gerekecektir.

NOT 2: Kerberos ayarları ve sorun çözümleri için aşağıdaki makalelerden yararlanabilirsiniz:

Kerberos authentication and troubleshooting delegation issues 

How to troubleshoot Kerberos-related issues in IIS

CENK İŞCAN