#jwt #server #session #hs256 #builder #cataclysm #rs256

cataclysm-jwt

为 cataclysm 提供简单的 JWT 处理会话创建器

1 个不稳定版本

0.1.3 2024年7月24日

#76 in #session

Download history 60/week @ 2024-07-18 69/week @ 2024-07-25 6/week @ 2024-08-01

每月下载量 135

MIT 许可证

44KB
831 行代码(不含注释)

Cataclysm-jwt

为 Cataclysm 提供简单 JWT 构建器,支持 RS256 和 HS256。


安装

简单地将依赖项添加到 Cargo.toml 文件中

cataclysm-jwt = { git = "https://github.com/Arthur-phys/cataclysm-jwt.git" }

配置

该软件包有三个可选特性

  • lax-security: 禁用对 'aud', 'iss', 'exp', 'iat' 和 'nbf' 字段的检查
  • jwk-alg: 启用对 可选 字段 'alg' 的 JWK 检查
  • jwk-use: 启用对 可选 字段 'use' 的 JWK 检查

示例

examples 文件夹下可以找到两个示例。这里提供一个以供完整参考

const aud: &str = "AUDIENCE";
const iss: &str = "ISSUER";
const jwks_url: &str = "URL";
 
// Function requires a session as argument
async fn index(session: Session) -> Response {

    // Parameters on JWT Payload can be obtained easily:
    let iat = session.get("iat").unwrap();
    let name = session.get("name").unwrap();
    println!("Token issued at: {}",iat);
    println!("Name of person: {}",name);
    Response::ok().body("Hello, World!")

}


#[tokio::main]
async fn main() -> Result<(),Error> {

    let server = Server::builder(
        Branch::<()>::new("/").with(Method::Get.to(index))
    ).session_creator(
        // Builder requires a session
        // Assymmetric session built in this case
        JWTSessionBuilder::with_rs256().aud(aud)
        .iss(iss)
        // Used url for JWKs 
        .add_from_jwks(jwks_url)
        .await?
        .build()?
    )
    .build().unwrap();
 
    server.run("127.0.0.1:8000").await.unwrap();

    Ok(())

}

文档

https://arthur-phys.github.io/cataclysm-jwt/cataclysm_jwt/

依赖项

~22–37MB
~685K SLoC