【发布时间】:2021-04-30 14:31:11
【问题描述】:
我的情况与Eradicating 401 "Unauthorised" responses followed by 200 "Ok" responses中提到的情况非常相似
但它并没有为我们提供足够的回应。
我有一个简单 GET 请求的示例,当通过在没有 IIS 的情况下在本地运行 api 进行时,会产生一个响应,即 OK/200: Fiddler trace here
但是当它托管在 IIS 上时,它会返回两个 401 和一个 200:Fiddler trace here
这里还有 IIS 网络身份验证配置:Config
在调用 API 的应用程序中,我们检查 200 响应代码,我们在代码中收到间歇性的 200/401,这使得验证非常烦人,请求在每种情况下都能完美通过。
非常感谢这里的任何帮助,如果这是 NTLM 身份验证的工作方式,是否有任何其他方法来验证对 api 的调用最终是否成功?最后,这就是我们想在调用者应用程序中了解的内容。
正如一些文章中提到的,我尝试将 NTLM 移动到 IIS -> 身份验证 -> 提供程序列表中的提供程序列表顶部(底部协商),但这并不能解决此问题
感谢观看。
编辑:这是 fiddler 中 IIS 的请求标头:
编辑 2:根据 MisterSmith 的回答和其他阅读,这就是 NTLM 身份验证的工作方式,更多的是关于我们如何处理应用程序中的响应。
在我的情况下,我使用 .net core HttpClient 库发出请求,它处理 NTLM 身份验证的方式可能存在问题。 如果有人对此感兴趣,可以在这里找到:NTLM authentication HttpClient in Core
【问题讨论】:
-
您不仅需要收集 Fiddler 跟踪信息,还需要分析实际响应(如 Authorization 之类的标头),以了解究竟发生了什么。最好让您的域管理员协助分析发送到 DC 和 Kerberos 日志的数据包。
-
当然我已经添加了来自 fiddler 的请求头截图
标签: iis ntlm http-status-code-401