用途:该模式描述一种基于自包含令牌的认证方式。主体在请求中携带令牌,系统通过验证令牌本身的有效性(未被篡改、未过期)来确定主体身份,无需查询存储的凭证证据。适用于无状态认证、设计内嵌声明的令牌等场景。
核心角色:Subject(主体,随请求提供令牌)、Enforcer(执行点,处理前确保令牌已验证)、Verifier(决策点,管理令牌有效性验证)、Cryptographer(密码学原语,验证令牌完整性)、Key Manager(管理密钥)、Registrar(初次认证后签发令牌)。
数据元素:token(含主体与元数据的自包含凭证)、principal(从有效令牌提取的身份)、expiration(有效期)、signature/MAC(完整性保护)。令牌须包含主体标识、过期时间、签名或 MAC,可选附加声明(角色、权限、元数据)。
完整性验证两种方式:非对称数字签名(私钥签名、公钥验证,可用 RSA 至少 2048 位或 ECDSA 至少 256 位);对称 MAC(共享密钥,创建与验证同一密钥,HMAC 密钥至少 128 位)。建议密钥熵至少 128 位。
验证流程:主体携带动作与令牌交给执行点,执行点转交验证器;验证器向密钥管理器取密钥,交由密码学组件验证完整性,再检查过期、吊销状态(若实现),最后提取并返回主体或错误。
签发流程:主体先经其他方式认证,注册器生成含主体标识、过期时间、附加声明与签名/MAC 的令牌并返回。
安全考量:令牌生命周期越短越安全但便利性下降,应含绝对过期时间,长会话可考虑刷新令牌模式;无状态令牌无法直接吊销,可用短生命周期、吊销列表或令牌版本化;客户端存储方面,Web 用 HttpOnly、Secure Cookie 或安全存储,移动端用安全区/钥匙串,敏感应用切勿存于 localStorage;传输始终用 HTTPS,可考虑令牌绑定;令牌不应按请求重置,主体须重新认证获取新令牌;完整性至上,绝不接受被篡改的令牌,信任任何声明前先验证签名。
常见实现 JWT:由 Header(算法、类型)、Payload(声明,如 principal、exp、iat)、Signature 组成。警告:始终验证签名,绝不使用 "none" 算法。
实施清单:强签名算法(RS256、ES256、HS256);强制过期声明;信任声明前验证签名;安全密钥管理;仅经 HTTPS 传输;合适的令牌生命周期;定义吊销策略。
限制:资料未提供具体平台、收费、价格或效果信息。