내 IIS 사이트가 NTLM 또는 Kerberos를 사용하고 있는지 어떻게 확인할 수 있나요? Kerberos에서 NTLM으로 인증을 어떻게 변경할 수 있나요? 저는 IIS 7.5를 사용하고 있습니다.
답변1
에서:
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 연결을 협상하고 있음을 알려줍니다.첫 번째 문자가 '"T"이기 때문에 여기에서는 NTLM 인증이 사용된다는 것을 알 수 있습니다. "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
}
답변2
답변3
html/asp 페이지에서 아래 코드를 사용하십시오.
<%
authType=UCase(Request.ServerVariables("AUTH_TYPE"))
authHeader=Request.ServerVariables("HTTP_AUTHORIZATION")
response.write " Authentication Method : " & authType & "<BR>"
LenAuthHeader = len(authHeader)
response.write " Protocol : "
if Len(authType ) =0 then response.write " Anonymous" else if authType<>"NEGOTIATE" then response.write authType else if LenAuthHeader>1000 then response.write "Kerberos" else response.write "NTLM"
%>
답변4
그 대답은 완전하지 않습니다. 연결에서 NTLM을 사용할 수 있는 방법에는 두 가지가 있습니다. 하나는 WWW 인증 방법인 "NTLM"을 사용하는 것입니다. 다른 하나는 협상을 통한 것입니다. Negotiate는 다양한 메커니즘을 사용할 수 있는 GSSAPI를 사용합니다. Windows에서는 Kerberos와 NTLM이 모두 포함됩니다.
Wireshark는 TLS를 사용하지 않는다고 가정할 때 이 모든 것을 디코딩하고 무슨 일이 일어나고 있는지 빠르게 보여줄 수 있습니다. 그렇다면 Wireshark가 TLS 트래픽을 해독할 수 있도록 설정할 수 있습니다. 단지 추가적인 노력이 필요할 뿐입니다.