邮递员无法获得通过JWT进行授权呼叫的任何响应

时间:2018-11-04 17:31:41

标签: asp.net-core jwt postman identityserver4

我已经在.NET Core中设置了一个简单的API,使用由Identity Server 4精心组织的JWT保护它。当我访问属性为 [Authorize] 的端点时,得到的响应是预期的(401未经授权)。被注释掉,它返回实际的数据,就像所支持的那样。

现在,当添加带有键 Authorization 和值 Bearer XXX 的标头时,其中XXX是我获得的令牌,我立即收到一条错误消息,指出

  

无法得到任何回应

接着是关于做什么的四个建议。我关闭了SSL证书,并且不需要代理,因为一切都在基本设置中本地运行。超时无关(设置为0并立即发生错误)。

这给我留下了* backend的抽象选项,无法正常工作。我没有做任何特别的事情,只是遵循IS网站上提供的指南。我的印象是,我对错误的直接性感到惊讶,因为我在Postman中所做的事情不太聪明。此外,IS的控制台对错误一无所知,这进一步加剧了我对与此无关的问题的怀疑。

我试图在URL下面的选项卡上设置不同的授权。每次通话的结果相同。我检查了 hosts 文件,它看起来像这样

  

127.0.0.1本地主机

我已经确保this article所建议的粘贴令牌的末尾没有换行符。我尝试将键 Content-type 设置为 application / json 等。如建议的here。我检查了是否没有像here所示的冲突环境变量。等等-基本上我找到的任何信息,文章和提示。

在此阶段,我对如何解决此问题一无所知,并且我一直在寻找Google的新关键字。

可能是什么原因,该如何解决?至少,在哪里我可以从中获得更多关于如何进行的灵感?

2 个答案:

答案 0 :(得分:1)

为缩小此问题的范围,请检查令牌是否有效以及令牌是否被正确复制,然后将请求发送的令牌与原始令牌进行比较。

答案 1 :(得分:1)

我最近遇到了此问题,并通过在授权标签而不是标题标签中执行请求授权来解决此问题。

点击授权标签,将类型更改为 Bearer ,然后粘贴令牌。


如果可能的话,您可能还希望将访问令牌作为环境变量自动捕获;这样可以防止复制/粘贴问题,并使令牌过期后可以轻松刷新。

为此,您需要创建并保存一个提取访问令牌的邮递员请求,然后使用该请求中的“测试”标签来解析响应并将访问令牌设置为变量。

以下是一些示例测试代码,根据您的特定端点,可能需要对其进行修改:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("accessToken", jsonData.accessToken);

发出登录请求后,应填充{{accessToken}}环境变量,并且您可以使用{{accessToken}}作为您的Authorization值,而不是原始令牌字符串。