我在.NET Core中设置了一个简单的API,使用由Identity Server 4编排的JWT来保护它。当我访问归因于[Authorize]的端点时,我得到了预期的响应(401 Unauthorized)。注释掉,它返回实际数据,就像所支持的那样。
现在,当添加带有密钥授权和值Bearer XXX的标头,其中XXX是我获得的令牌时,我收到一条即时错误消息,说明
无法得到任何回应
然后提出四项建议。我关闭了SSL证书,并且不需要代理,因为所有内容都在基本设置中本地运行。超时不相关(设置为0并立即发生错误)。
它给我留下*后端的抽象选项不能正常工作。我没有做过任何特别的事情,只需遵循IS网站上提供的指南。由于错误的直接性,我的印象是,我在Postman中做了一些不太明亮的事情。此外,IS的控制台对错误没有任何说明,这进一步加强了我对与此无关的问题的怀疑。
我尝试在URL下面的选项卡上设置不同的授权。每次通话都有相同的结果。我检查了hosts文件,它看起来像这样
127.0.0.1 localhost
我已经确定this article建议在粘贴标记的末尾没有换行符。我已经尝试将关键的Content-type设置为application / json et.al.像建议的here。我已经检查过我没有碰撞环境变量,如here所示。等等 - 基本上我找到的任何信息,文章和提示。
在这个阶段,我没有关于如何解决问题的想法,我对谷歌的新关键词感到厌倦。
可能是什么原因,可以采取什么措施,至少在哪里可以获得更多关于如何进行的灵感?
要缩小此问题,请检查令牌是否已验证以及是否正确复制了令牌,比较请求发送的令牌和原始令牌。
我最近遇到了这个问题并通过在“授权”选项卡中执行请求授权而不是“标题”选项卡来修复它。
单击“授权”选项卡,将类型更改为“承载”,然后粘贴到令牌中。
如果可能,您可能还希望将访问令牌的捕获自动化为环境变量;这可以防止复制/粘贴问题,并允许您在令牌过期后轻松刷新。
为此,您需要创建并保存检索访问令牌的Postman请求,然后使用该请求中的“测试”选项卡来解析响应并将访问令牌设置为变量。
以下是一些示例测试代码,可能需要根据您的特定端点进行修改:
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("accessToken", jsonData.accessToken);
在发出登录请求后,应填充{{accessToken}}
环境变量,并且可以使用{{accessToken}}
作为授权值而不是原始令牌字符串。