JSON 网络令牌 (JWT) 安全

JSON Web Token (JWT) Security

我正在使用 Node.js、MySQL 和 JSON 网络令牌构建 api。

我的 JWT 看起来像这样:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJsb2dnZWRfaW4iLCJhZG1pbiJdLCJpZCI6NzEsImlhdCI6MTQ1OTQ0NjU5MCwiZXhwIjoxNDU5NTMyOTkwfQ.BBbdyFMztYkXlhcBjW6D5SsKxtaRiZJqiNShOroQmhk

及其声明解码为:

{"roles":["logged_in","admin"],"id":71,"iat":1459446590,"exp":1459532990}

当 api 端点收到该 JWT 时,调用 ID 为 71 的用户 table 以获取任何相关详细信息或使用来自 JWT 的 ID 是否更安全?

理想情况下,我们会节省对用户的大量调用 table,但是是否存在安全威胁?恶意用户不能在调用端点之前更改该 ID 或角色吗?

JWT 已签名。如果用户更改了负载上的任何内容,签名验证将失败,您将知道数据已被篡改。

也就是说,数据本身没有加密。您可以使用用户 ID——但不要添加除可能 public.

之外的敏感信息

关于 JWT 验证和生命周期的更多信息:

https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback