1.2.1 |
|
---|---|
1.1.0 |
|
1.0.0 |
|
#18 在 #jwks
28KB
293 行
alcoholic_jwt
这是一个用于 验证 使用 JWKS 中的密钥的 RS256 JWT 的库。不多也不少。
RS256 是 JWT 最常用的非对称签名机制,例如在 Google 或 Aprila 的 API 中。
库的名称来源于尝试使用为类似目的制作的其他 Rust 库可能产生的潜在副作用。
使用概述
您正在从某个使用 RS256
签名并以其 JWKS 格式提供其公钥的认证提供者检索 JWT。
关于提供用于签名的密钥 ID 的令牌的示例
extern crate alcoholic_jwt;
use alcoholic_jwt::{JWKS, Validation, validate, token_kid};
// The function implied here would usually perform an HTTP-GET
// on the JWKS-URL for an authentication provider and deserialize
// the result into the `alcoholic_jwt::JWKS`-struct.
let jwks: JWKS = jwks_fetching_function();
let token: String = some_token_fetching_function();
// Several types of built-in validations are provided:
let validations = vec![
Validation::Issuer("auth.test.aprila.no".into()),
Validation::SubjectPresent,
];
// If a JWKS contains multiple keys, the correct KID first
// needs to be fetched from the token headers.
let kid = token_kid(&token)
.expect("Failed to decode token headers")
.expect("No 'kid' claim present in token");
let jwk = jwks.find(&kid).expect("Specified key not found in set");
validate(token, jwk, validations).expect("Token validation has failed!");
底层
此库旨在仅使用可信的现成组件来完成工作。加密操作由 openssl
crate 提供,JSON 序列化由 serde_json
提供。
依赖项
~11–25MB
~493K SLoC