通过邮递员通过NTLM


77

有没有办法通过Windows Authenticationpostman

我已经在标头中添加了这个,但是还是401 Unauthorized

Authorization: NTLM TkFcYWRtaW46dGVzdA==

链接所建议。我已经加密了,Unicode (UTF-16, little-endian)但没有用。

有任何想法吗?


1
我认为这里有两个方面需要考虑:针对代理的身份验证或针对目标服务器的身份验证。
君士坦丁堡Cronemberger '18

Answers:


32

我认为没有办法做到这一点。但是,您并不孤单地想要它...

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

[编辑]作为此编辑的补充,Postman在其最新版本中的beta版中具有NTLM身份验证。

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


5
似乎v5.3.0将具有此功能。刚刚发布了有关问题线程的更新
。– RBT

适用于v5.3.2!
马特·瓦布洛

2
看起来好像又坏了。问题已全部解决,但不能在6.0.10版中使用。建议使用Fiddler的答案有效。
君士坦丁堡Cronemberger '18

这似乎是仍在打开的活动漏洞。github.com/postmanlabs/postman-app-support/issues/4355
Jim

1
请谨慎使用!如果您不使用变量(如GUI所建议),则会以可识别的文本方式记录密码。(于C:\Users\...\AppData\Roaming\Postman\IndexedDB\file__0.indexeddb.leveldb\000NNN.log
Yahoo严重

111

我首先运行Fiddler使其工作。

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

就我而言,似乎我需要一直在后台运行提琴手,对此有什么解决方法?我不想让提琴手打开,它太重了
ghiscoding

1
是的,您在测试api时确实需要运行fiddler。没有提琴手,我不知道有什么办法。
PabloBlamirez

1
对于针对代理的NTLM身份验证,您将需要使用此解决方法,直到解决此问题为止:github.com/postmanlabs/postman-app-support/issues/3692
Constantino Cronemberger

1
尽管我仍然不知道为什么只有这样才能奏效。目前,它对我的​​测试有所帮助。非常感谢你。
Eakan Gopalakrishnan

49

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

在此处输入图片说明


4
只需记住将域包含在其字段中即可,而不是Username
Tonatio

3
我尝试过,它仍然给我401未经授权的错误。我正在访问SharePoint 2010托管的Web API
Xiao Han

检查邮递员的设置,将所有设置都设置为“关闭”。这对我
George Livingston,

@XiaoHan跟随Tonatio并在其域中包含域,而不是用户名
sujit tiwari

2
请谨慎使用!如果您不使用变量(如屏幕快照中的GUI所建议,请参见Alexei的回答),那么您的密码将以可识别的文本方式记录。(输入C:\Users\...\AppData\Roaming\Postman\IndexedDB\file__0.indexeddb.leveldb\000NNN.log)它也存储在某个位置,因为它已还原以用于后续请求。
雅虎(Yahoo)严重的


3

NTLM身份验证确实适用于Postman的Chrome插件版本,因为该插件可以使用内置的Chrome NTLM身份验证。但是,Chrome不再支持插件,因此无法再安装和使用此版本。

当前的Postman应用程序版本(Chrome应用程序版本和本机应用程序版本)均不支持NTLM身份验证。


1
这不能为问题提供答案。要批评或要求作者澄清,请在其帖子下方发表评论。-来自评论
Peter Hall

1
@PeterHall如果将其改写为“ NTLM身份验证确实适用于较旧的Postman Chrome插件...”如何?问题并没有明确指出它是Chrome应用程序(尽管人们可以猜测那是asker所使用的)。
M. Justin

2
@PeterHall感谢您的改进建议。我相应地更新了我的答案。
M. Justin

2

我将改进Hala的答案,因为由于在请求中存储凭据而导致问题,如果使用凭据,这些凭据可能会保存在共享存储库中。

成功发出请求后清除凭证

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

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

定义要使用和配置的环境,类似于此:

配置环境

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

请求授权数据


1
好答案。一个小的改进是将凭据存储在全局变量中,而不是环境中。这样,您可以与团队共享环境。
SSS

@SSS-是的。我在NTLM支持还处于起步阶段时发布了此答案(这种情况甚至使Postman崩溃了)。那时,使用已弃用的Chrome扩展程序可以轻松地从Windows身份验证中受益,而无需进行任何操作。
阿列克谢

1

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

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

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

打开互联网选项: 打开互联网选项

单击自定义级别...,然后滚动到底部:

单击自定义级别...,然后滚动到底部


1

在5.3.0中添加到Postman应用程序的。但是,此支持在5.4.1中被打破,并且在每个Postman App问题#4355之前一直保持到7.14.0 。因此,将应用程序更新到较新版本的Postman应该允许使用NTLM身份验证。

请注意,每个Postman App问题#8038,Postman当前仅支持NTLMv1身份验证,但不支持NTLMv2 。



-6

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

#if !DEBUG 
   [Authorize] 
#endif

我想在执行API调用时获取当前用户名。您如何通过禁用授权来实现?
cdev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.