【问题标题】:Getting IDX10205 when accessing backend api from frontend从前端访问后端 api 时获取 IDX10205
【发布时间】:2021-06-23 00:18:44
【问题描述】:

根据this tutorial,我正在尝试设置一个前端 React 应用服务和一个后端 Node 应用服务,它们都需要身份验证。 除了我需要设置 "loginParameters": ["response_type=code id_token", "scope=openid api://<backend app id>/user_impersonation"] 而不是 additionalLoginParams 之外,我已经按照这些步骤操作了,因为我的应用使用 auth v2。

当我的前端应用调用我的后端 api 时,我收到以下错误

{"code":401,"message":"IDX10205: Issuer validation failed. Issuer: '[PII is hidden]'. Did not match: validationParameters.ValidIssuer: '[PII is hidden]' or validationParameters.ValidIssuers: '[PII is hidden]'."}

我不知道如何调试它,因为响应中的有用信息被隐藏了,我在使用 Node.js 时找不到显示它的方法。我检查了令牌,颁发者是https://sts.windows.net/<tenant id>/,但我不知道预期是什么或如何设置ValidIssuer。

我为验证代码所做的是在登录后从前端调用/.auth/me 以接收访问令牌,并且此令牌作为Authentication: Bearer <access_token> 传递到标头中的后端api。我希望 Azure 根据链接教程中的设置来处理其他所有事情。这是正确的吗?

如何调试这个问题?

编辑

这就是后端应用注册的公开 API 页面的外观。

这是我的访问令牌的数据。

【问题讨论】:

  • 有一个配置设置默认隐藏 PII。您可以更改该设置以在错误消息中查看此信息。
  • @GauravMantri 在哪里可以找到此设置?
  • 对不起,我之前没说清楚。您能否分享您用于身份验证/授权的 SDK 的名称和版本?这是 SDK 中的设置。
  • @GauravMantri 我没有使用 SDK 进行身份验证。我已限制来自 Azure 门户的访问,我致电 /.auth/me 以获取我的令牌,如问题中所述。
  • 1.删除api:// 前缀scope=openid {back-end api client id}/.default 2. 提供您的公开api的屏幕截图。

标签: node.js azure azure-active-directory azure-web-app-service


【解决方案1】:

您的问题已解决,请将其作为问题末尾的答案发布。

正如我在 cmets 中所说,您需要获取令牌的2.0 版本。所以你需要把应用ma​​nifestaccessTokenAcceptedVersion attribute改成:"accessTokenAcceptedVersion": 2

【讨论】:

  • 为后端 api 更新这个属性解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 2016-01-06
  • 2017-05-03
  • 2022-01-25
  • 2021-07-11
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 2018-12-01
相关资源
最近更新 更多