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 在 身份验证
4,389 每月下载量
用于 5 crate
39KB
777 代码行
Frank JWT
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