邮递员使用 JWT 进行授权调用时无法获得任何响应
Posted
技术标签:
【中文标题】邮递员使用 JWT 进行授权调用时无法获得任何响应【英文标题】:Postman could not get any response making authorized call with a JWT 【发布时间】:2019-04-08 04:05:29 【问题描述】:我在 .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 et.al。喜欢建议的here。我已经检查过我没有像here 所示的冲突环境变量。等等 - 基本上是我找到的任何信息、文章和提示。
在这个阶段,我对如何解决问题没有任何想法,并且我对谷歌搜索的新关键字感到厌烦。
可能是什么原因,可以做些什么,至少,我可以从哪里获得更多关于如何继续的灵感?
【问题讨论】:
您确定网站在https
下运行吗?您是否尝试过在 Postman 中使用 http
?
对于where XXX is my obtained token
,你是如何获得这个令牌的?要检查它是否与邮递员配置有关,您可以使用简单的html页面进行测试并将ajax请求发送到该端点,您是否收到任何错误?另外,您可以使用 Fiddler 进行测试以发送请求。
@TaoZhou 原来,复制的令牌将换行符合并到字符串中并转换为空格。这让邮递员窒息。是你的你是如何获得令牌的让我思考的。您的意思可能是代码,但它让我想到了复制它的实际行为。当然,还有粘贴。请重新发表您的评论作为回复,以便我接受。
【参考方案1】:
为了缩小这个问题,检查令牌是否验证以及令牌是否被正确复制,比较从请求发送的令牌和原始令牌。
【讨论】:
【参考方案2】:我最近遇到了这个问题,并通过在 Authorization 选项卡而不是 Headers 选项卡中执行请求授权来修复它。
点击授权选项卡,将类型更改为Bearer,然后粘贴您的令牌。
如果可能,您可能还希望自动捕获访问令牌作为环境变量;这可以防止复制/粘贴问题,并允许您在令牌过期后轻松刷新。
为此,您需要创建并保存一个检索访问令牌的 Postman 请求,然后使用该请求中的“测试”选项卡来解析响应并将访问令牌设置为变量。
以下是一些示例测试代码,可能需要根据您的特定端点进行修改:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("accessToken", jsonData.accessToken);
发出登录请求后,应填充accessToken
环境变量,您可以使用accessToken
作为您的授权值,而不是原始令牌字符串。
【讨论】:
以上是关于邮递员使用 JWT 进行授权调用时无法获得任何响应的主要内容,如果未能解决你的问题,请参考以下文章