从前端访问后端 api 时获取 IDX10205

Getting IDX10205 when accessing backend api from frontend

根据 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。

我为身份验证所做的工作 code-wise 是在登录后从前端调用 /.auth/me 以接收访问令牌,并且此令牌在 [=46= 中传递到后端 api ] 为 Authentication: Bearer <access_token>。我希望 Azure 能够根据链接教程中的设置处理其他所有事情。这是正确的吗?

我该如何调试这个问题?

编辑

后台应用注册的 Expose an API 页面是这样的。

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

你的问题已经解决,post作为问题的最后答案。

正如我在评论中所说,您需要获取 2.0 版本的令牌。所以需要将applicationmanifestaccessTokenAcceptedVersion attribute修改为:"accessTokenAcceptedVersion": 2.