15个稳定版本

使用旧的Rust 2015

3.1.3 2022年8月11日
3.1.2 2019年11月6日
3.1.1 2019年5月23日
3.1.0 2018年12月7日
2.1.0 2015年7月30日

#156身份验证

Download history 573/week @ 2024-03-14 619/week @ 2024-03-21 750/week @ 2024-03-28 621/week @ 2024-04-04 548/week @ 2024-04-11 437/week @ 2024-04-18 553/week @ 2024-04-25 607/week @ 2024-05-02 1253/week @ 2024-05-09 1199/week @ 2024-05-16 1182/week @ 2024-05-23 1345/week @ 2024-05-30 1185/week @ 2024-06-06 973/week @ 2024-06-13 846/week @ 2024-06-20 990/week @ 2024-06-27

4,389 每月下载量
用于 5 crate

Apache-2.0

39KB
777 代码行

Frank JWT 构建状态 crates.io

Rust中JSON Web Tokens的实现。

支持算法和特性

  • HS256
  • HS384
  • HS512
  • RS256
  • RS384
  • RS512
  • ES256
  • ES384
  • ES512
  • 签名
  • 验证
  • iss (发行者) 检查
  • sub (主题) 检查
  • aud (受众) 检查
  • exp (过期时间) 检查
  • nbf (不可用之前的时间) 检查
  • iat (发行时间) 检查
  • jti (JWT id) 检查

用法

将以下内容放入您的 Cargo.toml

[dependencies]
frank_jwt = "<current version of frank_jwt>"

并在您的crate根目录下添加以下内容

extern crate frank_jwt;
#[macro_use] extern crate serde_json;


use frank_jwt::{Algorithm, encode, decode};

示例

//HS256
let mut payload = json!({
    "key1": "val1",
    "key2": "val2"
});

let mut header = json!({});
let secret = "secret123";
let jwt = encode(&header, secret.to_string(), &payload, Algorithm::HS256);

//RS256
use std::env;

let mut payload = json!({
    "key1": "val1",
    "key2": "val2"
});

let mut header = json!({});
let mut keypath = env::current_dir().unwrap();
keypath.push("some_folder");
keypath.push("my_rsa_2048_key.pem");
let jwt = encode(&header, &keypath.to_path_buf(), &payload, Algorithm::RS256);
let (header, payload) = decode(&jwt, &keypath.to_path_buf(), Algorithm::RS256, &ValidationOptions::default());

验证选项

ValidationOptions结构允许控制解码JWT时应该执行哪些检查。调用new将提供一组默认值。还有一个危险函数,将返回不执行任何检查的验证选项。

默认值是

  • 执行过期检查
  • 允许过期检查的0宽容度。

需要注意的是,如果请求过期检查但JWT中不存在exp声明,则检查将失败。

许可

Apache 2.0

测试

cargo test

贡献者

待办事项

依赖关系

~2.4–3.5MB
~77K SLoC