Authentication
如何檢查我的 IIS 站點是否使用 NTLM 或 Kerberos?
如何檢查我的 IIS 站點是否使用 NTLM 或 Kerberos?以及如何將身份驗證從 Kerberos 更改為 NTLM?我正在使用 IIS 7.5。
從:
確定 HTTP 身份驗證是 NTLM 還是 Kerberos
http://support.microsoft.com/kb/891032
$$ … $$ “由於我們正在查看此跟踪以查看客戶端是否正在發送身份驗證資訊,因此我們可以使用 TCP 段來跟踪 HTTP GET 請求和來自伺服器的響應。這是從發送身份驗證資訊的幀中的片段客戶:
23 4294967263.4294641621 LOCAL 00045A420DBC HTTP GET Request (from client using port 3135) 192.168.0.2 192.168.0.4 IP HTTP: GET Request (from client using port 3135) HTTP: Request Method = GET HTTP: Uniform Resource Identifier = /webapplication1/webform1.aspx HTTP: Protocol Version = HTTP/1.1 HTTP: Accept = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd. HTTP: Accept-Language = en-us HTTP: Accept-Encoding = gzip, deflate HTTP: User-Agent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR HTTP: Host = alien HTTP: Connection = Keep-Alive HTTP: Authorization = Negotiate TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A AAADw==....
“這告訴我們什麼?我們可以看到 Authorization 標頭設置為“Negotiate”,並且我們可以看到在該標頭中發送了一長串字元。此響應告訴我們客戶端和伺服器正在協商 NTLM 連接。我們知道這裡使用了 NTLM 身份驗證,因為第一個字元是“T”。如果是“Y”,那將是 Kerberos。標頭設置為“協商”而不是“NTLM”。這並不意味著它將使用 Kerberos 或 NTLM,但它將“協商”授權方法,如果可以,首先嘗試 Kerberos。如果不能使用 Kerberos,它將使用 NTLM。
// if it is Negotiate... if (String.Compare(Request.ServerVariables["HTTP_AUTHORIZATION"].Substring(10, 1), "Y", true) == 0) { // we are using Kerberos } else { // we are using NTLM }