crab-vault-auth 0.2.11

The auth sdk for crab vault.
Documentation

JSON Web Token (JWT) Authentication Library

这是一个基于 jsonwebtoken crate 封装的 JWT 认证模块。 它提供了灵活的 JWT 生成、解码、验证以及基于声明的权限控制功能。

主要特性

  • 强类型 JWT: 通过泛型 Jwt<P> 支持自定义的载荷 (Payload)。
  • 流畅的构建器模式: 链式调用方法轻松构建 JWT 声明。
  • 灵活的配置: 支持多种签名算法,便于密钥轮换。
  • 集成的错误处理: AuthError 枚举与 axumIntoResponse 无缝集成。
  • 基于声明的权限: 内置 Permission 结构,支持基于 Glob 模式的资源和操作权限控制。

快速上手

// 1. 定义你的载荷
#[derive(Serialize, Deserialize)]
struct MyPayload {
    user_id: u32,
    permissions: Vec<Permission>,
}

// 2. 创建配置
let config = JwtConfig {
    // ... 设置 encoding_key, decoding_key, header, validation
};

// 3. 创建并签发 Token
let payload = MyPayload { /* ... */ };
let claims = Jwt::new(payload)
    .issue_as("my-app")
    .expires_in(chrono::Duration::hours(1));

let token = Jwt::encode(&claims, &config)?;

// 4. 在 Axum Handler 中解码和验证
async fn protected_route(
    State(config): State<Arc<JwtConfig>>,
    TypedHeader(Authorization(bearer)): TypedHeader<Authorization<Bearer>>,
) -> Result<Json<MyPayload>, AuthError> {
    let decoded = Jwt::decode::<MyPayload>(bearer.token(), &config)?;
    Ok(Json(decoded.payload))
}