Skip to content

Cell - JWT 组件 ​

JwtService 用 node:crypto 签名、验证和解码 JSON Web Token(无第三方依赖)。算法:HS256/384/512、RS256/384/512、PS256/384/512、ES256/384/512 和 none(仅在 algorithms 中列出时)。

yaml
jwt:
  secret: ${env.JWT_SECRET}      # 或 privateKey / publicKey(PEM)
  signOptions:
    expiresIn: 2h

选项、默认值、检查和错误消息来自 jsonwebtoken 包,所以任一方制作的 token 都能用另一方验证:expiresIn / notBefore / maxAge 取秒或 '2h'、'7 days';verify 检查 audience(字符串或 RegExp)、issuer、subject、jwtid、nonce,带 clockTolerance。失败是 JsonWebTokenError、TokenExpiredError(expiredAt)和 NotBeforeError(date)。密钥必须符合算法:HS* 用 HMAC 密钥、RS* / PS* 用至少 2048 位的 RSA 密钥(allowInsecureKeySizes 允许更少)、ES* 用匹配曲线的 EC 密钥。

短于 32 字节的 HMAC secret(无 privateKey)由 cell check 和生产启动(@celljs/core 的 securityChecks)报告为 CELL_SECURITY_WEAK_JWT_SECRET:短密钥可从一个 token 暴力破解。使用 openssl rand -base64 48 或 RSA / EC 密钥对。

JwtUtil.sign / verify / decode 在没有容器的情况下做同样的事。