Authentication

如何檢查我的 IIS 站點是否使用 NTLM 或 Kerberos?

  • September 22, 2021

如何檢查我的 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
}

引用自:https://serverfault.com/questions/423161