【问题标题】:Postman could not get any response making authorized call with a JWT邮递员使用 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 原来,复制的令牌将换行符合并到字符串中并转换为空格。这让邮递员窒息。是你的你是如何获得令牌的让我思考的。您的意思可能是代码,但它让我想到了复制它的实际行为。当然,还有粘贴。请重新发表您的评论作为回复,以便我接受。

标签: asp.net-core jwt postman identityserver4


【解决方案1】:

为了缩小这个问题,检查令牌是否验证以及令牌是否被正确复制,比较从请求发送的令牌和原始令牌。

【讨论】:

    【解决方案2】:

    我最近遇到了这个问题,并通过在 Authorization 选项卡而不是 Headers 选项卡中执行请求授权来修复它。

    点击授权选项卡,将类型更改为Bearer,然后粘贴您的令牌。


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

    为此,您需要创建并保存一个检索访问令牌的 Postman 请求,然后使用该请求中的“测试”选项卡来解析响应并将访问令牌设置为变量。

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-24
      • 2019-04-01
      • 2021-07-03
      • 2018-01-04
      • 2018-06-03
      • 1970-01-01
      • 2019-09-24
      • 2019-01-04
      • 2019-07-18
      相关资源
      最近更新 更多