2 个版本
0.0.4 | 2022年1月15日 |
---|---|
0.0.3 | 2022年1月14日 |
0.0.2 |
|
0.0.1 |
|
#1729 in 加密学
20KB
331 行
TENET
糟糕的 jwt 实现
[dependencies.jwt]
package="tenet"
version = "*"
features = ["HS256"]
不要使用这个
这个库速度慢,实现简单,总共花费20分钟编写和调试。
你最好使用另一个经过验证的 JWT 实现
为什么存在? 我对签名字令和验证令牌的糟糕 API 设计感到厌倦。
- 这个库只有两种不同的令牌类型。
- 这个库不对令牌的有效载荷进行任何验证。
类型
这个库有两种令牌类型
- 一个具有给定类型(
Token<T>
)的未签名令牌 - 一个已签名令牌(
SignedToken
)
令牌算法由枚举 TokenAlgorithm
决定
支持算法
HS256
HS512
示例
use serde::{Serialize, Deserialize};
use jwt::{Token, TokenAlgorithm, SignedToken};
// Create a new token type.
// This uses serde's Serialize and Deserialize procedural macros.
#[derive(Serialize, Deserialize, Debug)]
struct MyToken {
foo: u8,
bar: bool,
baz: String,
}
// create a key to sign and verify tokens.
let token_key = b"VERY_SECURE_KEY".to_vec();
// create a new token, sign it, and get the string representation
let token = Token::create(
TokenAlgorithm::HS256,
MyToken { foo: 10, bar: true, baz: "Hello World".to_string() }
)
.sign(&token_key).unwrap().string();
println!("{}", token);
// verify a token input
let payload = Token::<MyToken>::verify(token, &token_key).unwrap();
println!("{:?}", payload);
依赖项
~0.9–1.8MB
~40K SLoC