访问令牌和 ID 令牌

Access tokens and id tokens

我对这些协议还很陌生,我在理解某些东西时遇到了一些困难。 我目前正在开发 API 和前端是我的应用程序,我使用 azure 身份平台在客户端接收令牌并将令牌发送到使用 passport-azure-ad bearerStrategy 验证令牌的服务器。 (当然,我为此目的注册了我的应用程序)。 我没有得到的是,我错过了在我的客户端中正确使用我从 azure 收到的令牌并将 ID 令牌发送到我的 API,它验证它是有效的并且用户经过身份验证可以执行发送的请求。 但是,正如我在此处 https://docs.microsoft.com/en-us/azure/active-directory/develop/id-tokens 以及有关 oAuth2 和 openID 的任何其他文章中所读,ID 令牌用于 UX 内容和客户端,而我本应在 API 的请求中使用访问令牌。 但是怎么ID Token也在我的API中验证了呢?这对我来说毫无意义,还是我错过了什么?
如果是这样,是否像我一样使用 Id Token 有任何缺陷? 谢谢!

APIs 应该首先验证 JWT 访问令牌,以检查这些字段是否具有允许的值。然后,ID 令牌将无法通过受众检查。

  • JWT 签名
  • 目前未过期/有效
  • 颁发者(Microsoft ID)
  • 观众(例如api.mycompany.com)

访问令牌有 scopes,而 ID 令牌没有。每个 API 端点都应该验证接收到的范围,例如,以确保它收到了正确类型的令牌。这也将确保 API 不接受 ID 令牌。

因此,尽管一些 API 技术堆栈接受 ID 令牌,但进行标准检查将确保正确的行为。然后使用 claims 完成真正的 API 授权,以应用您的业务规则。