SuperAPI AI 工具集

axum-impl-auth-jwt

安全与审计

查看项目

更新于 10-16 09:56

技能介绍

用途:在 Axum 服务中加入无状态 JWT 认证,适用于登录路由签发 bearer 令牌、处理器要求携带有效令牌等场景,参照 tokio-rs/axum 的 examples/jwt 实现。

主要能力与机制:由六部分组成——Claims 结构体、持有 EncodingKey 与 DecodingKey 的 Keys、实现 IntoResponse 的 AuthError 枚举、Claims 的 FromRequestParts 提取器、受保护处理器、签发令牌的登录处理器。Claims 实现 FromRequestParts 后,任何以 claims: Claims 为参数的处理器自动受保护:令牌缺失、格式错误或过期时提取器返回 Err(AuthError::InvalidToken) 并转为 HTTP 响应,处理器主体不执行,认证由类型系统而非处理器内守卫强制。

必要用法与两条核心规则:签名密钥必须从环境变量读取,绝不使用字符串字面量——字面量会把凭据固化进二进制与 git 历史;Claims 必须携带 exp 字段,Validation::default() 会校验过期并强制要求 exp,缺失则所有令牌解码失败。令牌从 Authorization 头读取,Claims 应实现 FromRequestParts 而非 FromRequest。HS256 场景两侧共用同一密钥;单服务签发并校验用 HS256,多方校验用 RS256/ES256/EdDSA 并设置 Validation.algorithms。默认 Validation 仅校验过期,如需约束受众或签发者需自建 Validation。

依赖与版本:axum 0.8、axum-extra 0.10(typed-header 特性)、jsonwebtoken 10(aws_lc_rs 特性)、serde 1.0(derive)、serde_json 1.0、tokio 1.0(full)。Axum 0.8 用原生 async fn in trait,无需 #[async_trait];0.7 需在 impl 块上使用 #[async_trait]。

限制:资料未提供收费、价格或平台信息;示例中登录处理器内的凭据比较为占位逻辑,真实代码应查询数据库。