#jwt #jwks #token #jwk

已撤回 jwks_rsa_easy

用于验证远程 JWKS 的 RS256 JWT 的库

1.2.1 2021年7月18日
1.1.0 2021年7月16日
1.0.0 2021年7月16日

#18#jwks

GPL-3.0-or-later

28KB
293

alcoholic_jwt

Build Status

这是一个用于 验证 使用 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