检索 API 数据 Microsoft Health Bot - 授权错误 JWT 验证失败

Posted

技术标签:

【中文标题】检索 API 数据 Microsoft Health Bot - 授权错误 JWT 验证失败【英文标题】:Retrieve API data Microsoft Health Bot - Authorization error JWT verification failed 【发布时间】:2021-06-25 12:09:45 【问题描述】:

我尝试按照以下 repo 文档从 Microsoft health bot 检索 API 数据:https://github.com/microsoft/HealthBotCodeSnippets/tree/master/HealthAgentAPI,其中 GET API 端点假定为 https://us.healthbot.microsoft.com/api/account/$tenantName/scenarios。 JWT 签名令牌应该在哪里:


  "tenantName": "myTenant", (tenant is from my Health bot portal)<br />
  "iat": "1648533033"  

(我输入了 2022 年,我从 Unix 时间戳得到的 iat 值:https://www.unixtimestamp.com/)

所以我把上面的tenantName和iat放在JWT网站(https://jwt.io/)中,生成JWT token。 在邮递员上:我使用上述端点发出GET 请求,在标题选项卡上,我将Authorization 放置为KEY 和Bearer &lt;JWT Token just generated&gt; 的值。 响应为Authorization error - JWT verification failed 400 错误请求 谁能帮忙找出我的任何错误?

【问题讨论】:

我不熟悉 ms-health-bot,但您的令牌包含声明 iat,即在(令牌创建时间戳)发布的时间。因此,验证失败可能是因为 iat 时间戳在未来太远了。请尝试使用当前时间。同样,这只是一个猜测。你用哪个秘密签署了令牌? @jps 解决方案是我没有在 VERIFY SIGNATURE 上放置正确的秘密,所以当你解码时,你还需要把正确的秘密值放在你可以在你的 Health bot 的 MS Portal 上找到的地方 集成部分 > 秘密 > API_JWT_SECRET 加油,希望这个答案也能帮助到你。 【参考方案1】:

解决方案是我在生成 JWT 令牌时没有在 VERIFY SIGNATURE 上放置正确的秘密,所以当你解码时,你还需要将正确的秘密值放在你可以在你的 Health bot 的 MS Portal 上找到的位置 集成部分 > 秘密 > API_JWT_SECRET

加油,希望这个回答也能帮到你。

【讨论】:

以上是关于检索 API 数据 Microsoft Health Bot - 授权错误 JWT 验证失败的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 EWS 托管 API 从 Microsoft Exchange 检索所有联系人?

通过 API 从 TFS 检索数据驱动测试的结果

Graph API 不会检索安全组

Microsoft Graph 登录审核日志 API:对于某些登录,内部用户显示为访客用户类型

使用.net核心Web API和jquery从天蓝色斑点中上传和检索图像

如何通过 Winsock 从外部设备检索数据到 Microsoft Visual Basic (VB6)