调用后端 API 时通过 access_token 或 id_token 识别用户

Identifying user through access_token or id_token when calling backend API

在 API 通话中识别用户的正确方法是什么?

我正在使用 Auth0 service 来保护我的 API 并管理用户 authentication/sign up 进程。我"think"我清楚两件事:

  1. access_token 允许客户端应用程序正确访问我的后端 API。换句话说,我需要将 access_token 与我的 API 调用一起发送到我的后端,以便我可以访问我的 API 端点。
  2. id_token 的主要目的是提供有关用户的后端 API 信息,例如id、姓名、电子邮件等

假设我对这两点是正确的,我如何让后端API知道用户是谁?我不认为我可以在同一个电话中同时发送 access_tokenid_token。那我要打两个电话吗?

我当然可以在我的 API 调用负载中包含用户信息,但这不会成为安全问题吗?恶意用户可能会在 API 调用之前更改用户信息并将 himself/herself 显示为其他人。

我不清楚让后端 API 知道用户是谁的方式。

P.S。如果需要,这里有更多信息:

我同意 Sam 的担忧,我的偏好是保持访问令牌小且机密 - 仅包含 API 可以读取的用户 ID。

有关更多信息,我使用此模式在 API 中使用声明,API 网关也常用此模式 - 例如 AWS: https://authguidance.com/2017/10/03/api-tokens-claims/

如果有帮助,这里有一个 .Net Core class 实现它。