1 个不稳定版本
0.1.3 | 2024年7月24日 |
---|
#76 in #session
每月下载量 135
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(())
}
文档
依赖项
~22–37MB
~685K SLoC