【问题标题】:Azure AD JWT Token Error in .NET Core 3.1.NET Core 3.1 中的 Azure AD JWT 令牌错误
【发布时间】:2020-12-11 17:13:28
【问题描述】:

我有 react 应用程序,它可以通过 Azure AD 登录用户。之后,我从 React 应用程序请求创建到我的 .net 核心 mvc 应用程序,并带有标头 Authorize。但是当我将 [Authorize] attr 添加到我的控制器中时,我得到了错误:

Bearer error="invalid_token", error_description="签名无效"

我只需要我的后端应用程序只检查 JWT 令牌的范围或角色并允许获取一些数据。我知道 JWT 是正确的,并且可以毫无问题地对应用登录用户做出反应。

与此类似的问题: https://forum.ionicframework.com/t/validating-token-signatures-in-asp-net-core/108226

【问题讨论】:

  • 您是否在 AD 租户中注册了您的 API?
  • 你的意思是我的 .net 核心应用?
  • 是的,你的 .net 核心应用
  • 不。如果我需要注册网络核心应用程序,我只注册了我的反应应用程序,我不了解所有流程......现在它的反应 -> 从 azureAD 获取令牌 -> 添加标题授权 -> 网络核心应用程序请求网络核心应用程序应该只检查角色以及来自 jwt 令牌的声明,仅此而已。这个流程有什么问题?
  • 另外,您的 .net 核心应用程序中是否有正确的签名密钥?

标签: azure azure-active-directory jwt


【解决方案1】:

我总结了cmets并将其发布为答案:

通常 401 错误意味着您的令牌的受众与您的 api 不匹配。使用token调用api时,会收到401未授权错误。访问令牌是根据受众颁发的,因此您必须确保在请求令牌时将范围设置为您的 api。当然你也可以解析token,检查aud的声明,确定是你要调用的api。

当你暴露一个受 Azure 保护的 api 时,你需要将作用域设置为你的自定义 api,通常是api://{api app client id}/scope name,然后你需要将客户端应用程序添加到 api 应用程序中。

【讨论】:

  • @RomaPavliuk 您可以将其标记为结束线程的答案(单击答案旁边的复选标记将其从灰色切换为已填充。)或者您可以发布自己的答案。
猜你喜欢
  • 2020-07-02
  • 2020-06-28
  • 2020-08-24
  • 2020-11-13
  • 2019-03-23
  • 2020-05-05
  • 2019-01-21
  • 2021-12-07
  • 1970-01-01
相关资源
最近更新 更多