【问题标题】:Pass NTLM with Postman通过邮递员传递 NTLM
【发布时间】:2016-09-17 09:37:38
【问题描述】:

有没有办法通过Windows Authenticationpostman 传递?

我已经在标题中添加了这个,但仍然是401 Unauthorized

Authorization: NTLM TkFcYWRtaW46dGVzdA==

正如this 链接所建议的那样。我已加密为Unicode (UTF-16, little-endian),但没有用。

有什么想法吗?

【问题讨论】:

  • 我认为这里有两个方面需要考虑:针对代理的身份验证或针对目标服务器的身份验证。

标签: postman


【解决方案1】:

我通过先运行 Fiddler 来完成这项工作。

  1. 运行 Fiddler(我使用的是 4.6.2.3)
  2. Fiddler 菜单:规则 -> 自动验证 = true
  3. 邮递员:检查授权类型 = 无授权
  4. 浏览 api。

【讨论】:

  • 就我而言,似乎我需要一直在后台运行提琴手,有什么解决方法吗?我不想让 fiddler 打开,它太重了
  • 是的,您在测试 api 时确实需要运行 fiddler。我不知道没有提琴手的方法。
  • 对于针对代理的 NTLM 身份验证,您需要使用此解决方法,直到此问题得到解决:github.com/postmanlabs/postman-app-support/issues/3692
  • 虽然我仍然不知道为什么只有这个有效。它现在帮助我进行测试。非常感谢。
【解决方案2】:

您可以使用与此照片相同的“授权”选项卡中存在的 NTLM 授权

【讨论】:

  • 只要记住在其字段中包含域而不是Username
  • 我试过了,它仍然给我 401 未经授权的错误。我正在访问 SharePoint 2010 托管的 Web API
  • 检查邮递员的设置,将所有设置都“关闭”这对我有用
  • @XiaoHan 关注 Tonatio 并在其字段中包含域而不是用户名
  • 请谨慎使用!如果您不使用变量(正如屏幕截图中的 GUI 已经建议的那样,请参阅Alexei's answer),您的密码将以可识别的文本方式登录。 (在C:\Users\...\AppData\Roaming\Postman\IndexedDB\file__0.indexeddb.leveldb\000NNN.log中)它也存储在某个地方,因为它会为后续请求恢复。
【解决方案3】:

我认为没有办法做到这一点。但是,你并不是唯一一个想要它的人……

https://github.com/postmanlabs/postman-app-support/issues/1137

[编辑] 添加此编辑后,Postman 在其最新版本中具有测试版 NTLM 身份验证。

https://www.getpostman.com/docs/v6/postman/sending_api_requests/authorization

【讨论】:

  • 看来v5.3.0会有这个功能。刚刚发布了有关问题线程的更新。
  • 适用于我的 v5.3.2!
  • 看起来又坏了。这些问题都已关闭,但不适用于 6.0.10 版。建议使用 Fiddler 的答案是有效的。
  • 这似乎是它上面仍然打开的活动错误。 github.com/postmanlabs/postman-app-support/issues/4355
  • 请谨慎使用!如果您不使用变量(如 GUI 所建议的那样),您的密码将以可识别的文本方式记录。 (在C:\Users\...\AppData\Roaming\Postman\IndexedDB\file__0.indexeddb.leveldb\000NNN.log
【解决方案4】:

我建议使用insomnia。它是免费的,您可以在此处查看有关如何添加 NTLM Auth 的文档:https://insomnia.rest/documentation/authentication/

【讨论】:

【解决方案5】:

NTLM 身份验证确实适用于 Postman 的 Chrome 插件版本,因为内置的 Chrome NTLM 身份验证可以与插件一起使用。但是 Chrome 不再支持插件,所以这个版本不能再安装和使用了。

Postman 的当前应用版本(Chrome 应用和原生应用版本)不支持 NTLM 身份验证。

【讨论】:

  • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
  • @PeterHall 如果将其改写为“NTLM 身份验证确实适用于较旧的 Postman Chrome 插件......”怎么样?这个问题并没有特别指出它是 Chrome 应用程序(尽管可以猜到提问者使用的是什么)。
  • @PeterHall 感谢您的改进建议。我相应地更新了我的答案。
【解决方案6】:

我会改进 Hala's answer,因为它会因为在请求中存储凭据而出现问题,如果使用的话,这些凭据可能会保存在共享存储库中。

成功发出请求后清除凭据

一种方法是输入凭据 - 用户名、密码和域 - 发出请求并删除它们。 后续请求将起作用,可能是由于使用了相同的 NTLM 身份验证标头,因为 Postman 将添加具有如下值的临时授权标头(模糊):NTLM some_base64_content

使用环境变量(或SSS 建议的更好的全局变量)来存储敏感数据

定义一个环境以使用和配置它,类似于:

在请求中使用配置的环境变量:

【讨论】:

  • 很好的答案。一个小的改进是将凭据存储在全局变量中,而不是环境中。这样您就可以与您的团队共享环境。
  • @SSS - 是的。当 NTLM 支持仍处于起步阶段时,我发布了这个答案(甚至设法使 Postman 崩溃的场景)。那时,使用已弃用的 Chrome 扩展程序无需执行任何操作即可从 Windows 身份验证中受益要容易得多。
【解决方案7】:

您还可以更改互联网选项并将登录设置为: 使用当前用户名和密码自动登录

取自: https://sysadminspot.com/windows/google-chrome-and-ntlm-auto-logon-using-windows-authentication/

如果网站使用 https,您可以将其添加到受信任的站点并在此处设置,否则您可以将其添加到本地 Intranet 站点并在此处设置自定义级别...。

打开互联网选项:

点击自定义级别...并滚动到底部:

【讨论】:

    【解决方案8】:

    这个was added 到 5.3.0 中的 Postman 应用程序。然而,这种支持在 5.4.1 中被打破,直到 7.14.0 per Postman App issue #4355。因此,将应用程序更新到较新版本的 Postman 应该允许使用 NTLM 身份验证。

    请注意,Postman 目前仅支持 NTLMv1 身份验证,但不支持 NTLMv2 per Postman App issue #8038

    【讨论】:

      【解决方案9】:

      Postman 现在仅在其桌面应用程序上执行 NTLM。

      【讨论】:

        【解决方案10】:

        如果您使用 C# 开发 API,您可以在基本控制器上使用以下内容

        #if !DEBUG 
           [Authorize] 
        #endif
        

        【讨论】:

        • 我想在执行 API 调用时获取当前用户名。您将如何通过禁用授权来实现?
        • @cdev,在回复时,Postman 还不支持 NTLM。 现在有很多更好的选择,但当时没有。
        猜你喜欢
        • 2021-01-15
        • 1970-01-01
        • 2019-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-20
        • 2023-02-20
        • 2020-05-10
        相关资源
        最近更新 更多