在正文或令牌中传递用户 ID

mwi*_*ild 7 rest authorization api-design jwt

我正在构建一个 REST API。该 API 运行 JWT 身份验证系统。

显然,这意味着安全的路径需要与授权标头中的请求一起传递有效的 JWT 令牌。在每个 jwt 令牌中我有:

    sub: 1 //_id
Run Code Online (Sandbox Code Playgroud)

其中 sub 是当前经过身份验证的用户的 Id。

我的问题是,当我传递这个令牌时,是否还需要在请求正文中传递用户 ID?例如,我有一个创建前提方法。这需要帖子正文包含名称和描述,如下所示:

    {
        name: "Test Premises",
        description: "Lorem Ipsum"
    }
Run Code Online (Sandbox Code Playgroud)

在这种情况下,API 必须通过验证传递的令牌是否有效来找到用户来关联新的前提,然后对其进行取消编码并检索子字段。

这个方法可以吗?

有什么缺点吗?

我也应该在体内传递 Id 吗?

Jam*_*mes 6

这个方法可以吗

是的,这就是身份验证令牌的意义所在。

我也应该在体内传递 Id 吗?

如果您允许从客户端发送用户 ID,那么您将面临一个非常大的安全漏洞,例如,另一个经过身份验证的用户如果知道(或欺骗)其 ID,则可以代表另一个用户创建场所。

  • @mwild 我指的是这一点“*我是否应该在正文中传递 Id*”。如果您使用正文中的 ID,而不是身份验证令牌中的 ID,那么这是可利用的 - 黄金法则,永远不要信任客户端。 (3认同)
  • 更改用户 ID 会使令牌失效 (2认同)