这个项目能做什么

jsonwebtoken 是 Auth0 开发的广泛使用的 Node.js 版 JSON Web Token(RFC 7519)实现。它支持在 Node.js 应用中实现基于令牌的安全认证和授权。 主要功能: - **令牌签名(jwt.sign)**:使用对称(HMAC)或非对称(RSA、ECDSA、RSA-PSS)算法创建带有载荷声明(exp、nbf、aud、iss、sub、jti、iat)的 JWT。支持同步和异步操作。选项包括算法选择(默认 HS256)、过期时间(expiresIn、notBefore)、自定义头部、密钥 ID,以及针对旧版 RSA 密钥的不安全密钥长度允许设置。 - **令牌验证(jwt.verify)**:验证令牌签名和声明。接受密钥、PEM 公钥或密钥获取回调(适用于 JWKS 端点)。验证算法、受众、签发者、JWT ID、主题、过期时间(带 clockTolerance)、生效时间以及最大令牌寿命。设置 complete 选项时返回解码后的载荷或完整令牌对象(头部、载荷、签名)。 - **令牌解码(jwt.decode)**:在不验证签名的情况下检查令牌载荷和头部(不适用于不可信输入)。 - **支持的算法**:HS256、HS384、HS512(HMAC);RS256、RS384、RS512(RSASSA-PKCS1-v1_5);PS256、PS384、PS512(RSASSA-PSS,Node ≥6.12.0/≥8.0.0);ES256、ES384、ES512(ECDSA);以及“none”(无保护)。 - **错误处理**:不同的错误类型(TokenExpiredError、JsonWebTokenError、NotBeforeError),带有详细属性,便于程序化处理。 - **安全说明**:默认强制要求至少 2048 位 RSA 模数;支持通过 Buffer.from 使用 base64 编码的密钥;来自不可信来源的载荷应进行清理。 该库采用 MIT 许可,由 Auth0 维护,可与 node-jwks-rsa 等密钥管理解决方案集成以实现密钥轮换。主要版本升级提供迁移指南。