首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >第二NTLM授权头

第二NTLM授权头
EN

Stack Overflow用户
提问于 2022-11-03 20:43:10
回答 2查看 84关注 0票数 1

当使用--ntlm执行卷曲时,在WWW-身份验证头被发送回,然后第二个NTLM授权头被发送到最后返回200的结果之间发生了什么?

授权: NTLM xxxxxxxx

< HTTP/1.1 401未经授权

授权: NTLM xxxxxxxxxx

< HTTP/1.1 200 OK

我希望能够获取第一个NTLM头(这与我相信的用户名/密码保持不变),并将其构建到脚本中,获取返回的标头,并将第二个NTLM头发送回身份验证。我不明白的是如何挑战(WWW-认证头?)被接收,然后作为另一个NTLM报头发送回。

我尝试使用WWW-8月标题作为第二个NTLM-8月标题,我没有期待它的工作,但尝试。

EN

回答 2

Stack Overflow用户

发布于 2022-11-03 23:14:20

NTLM身份验证是一个多步骤的过程,它通过HTTP实现如下:

HTTP客户端发出HTTP请求(没有身份验证数据provided).

  • Server响应401未经授权,并声明它通过WWW-Authenticate: NTLM报头支持NTLM身份验证。

  • 客户端使用InitializeSecurityContext生成第一个身份验证令牌并将其发送到Authorization: NTLM <base64 encoded client token #1>报头中的服务器。

  • 服务器获取客户端的令牌并将其传递给AcceptSecurityContext,后者生成服务器的令牌。服务器再次使用401 Unauthorized进行响应,但这一次在WWW-Authenticate: NTLM <base64 encoded server token>头中包含了它的令牌。

  • 客户机获取服务器的令牌,并将其传递给InitializeSecurityContext,生成第二个令牌,然后在Authorization: NTLM <base64 encoded client token #2>头中发送回服务器。

  • 服务器获取客户端的第二个令牌并将其传递给AcceptSecurityContext,后者(假设身份验证成功)完成了该过程,服务器返回正常的<代码>d21响应。H 222G 223G 223

InitializeSecurityContextAcceptSecurityContext都会在初始调用中返回一些附加数据,这些数据必须包含在后续调用中,从而使身份验证过程具有状态,因此所有上述步骤都必须在与服务器的相同连接上进行。

票数 2
EN

Stack Overflow用户

发布于 2022-11-04 09:52:18

NTLM实际上是三次请求握手,客户端在第一次请求资源时不发送任何凭据。这意味着第一个请求是匿名的,即使已经为资源配置了凭据。当启用Windows身份验证并禁用匿名身份验证时,此匿名请求将导致HTTP 401状态。

第二个请求是NTLM挑战,其中客户端使用包含NTLM (Type-1消息)的附加“授权”头重新发送原始请求。然后,服务器以HTTP 401状态将NTLM质询(Type-2消息)发送回客户端。

第三个请求将是客户机通过向授权头添加一个问题响应(NTLM Type-3消息)再次发送的原始请求。然后,服务器对用户进行身份验证,如果成功,则返回具有HTTP 200状态的响应。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74309331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档