通过 HTTP 进行 NTLM 身份验证

see*_*ker 4 windows authentication iis ntlm active-directory

我想知道我们是否使用 NTLM (Windows) 身份验证 - 服务器如何确定用户是否已经登录。因此,当我第一次访问该站点时 - 服务器告诉我他想通过 NTLM 对我进行身份验证:

WWW-Authenticate: Negotiate
WWW-Authenticate: NTLM
Run Code Online (Sandbox Code Playgroud)

然后客户端和服务器交换很少的请求——实际上挑战/响应阶段发生在这里,特别是服务器生成并向客户端发送挑战,客户端根据它计算响应并发回,然后服务器联系域控制器进行验证。好的,我们完成了。

但是当我通过身份验证并转到任何页面时,不再有任何身份验证标头。服务器如何知道我已经通过身份验证?

PS 我认为 IIS 通过 MAC 或 IP 绑定客户端,但事实并非如此。NTLM 适用于单个浏览器。也没有找到 NTLM 特定的 cookie。

Pet*_*orf 5

NTLM over http 使用HTTP 持久连接或 http keep-alive。

创建一个连接,然后在会话的其余部分保持打开状态。

如果使用相同的已认证连接,则无需再发送认证标头。

这也是 NTLM 不能与某些不支持保持活动连接的代理服务器一起工作的原因。