#jwt #hmac #sha-256 #generate #per #parser #claim

jwt_hmac

一个简单的库,用于根据https://jwt.node.org.cn/introduction生成和解析JWT令牌,使用HMAC SHA256

2个不稳定版本

0.2.0 2023年2月15日
0.1.0 2021年12月6日

#398 in 认证

MIT/Apache

11KB
152 代码行

一个简单的库,用于根据https://jwt.node.org.cn/introduction使用HMAC SHA256生成和解析JWT令牌

###编码示例

use jwt_hmac;
use serde::Serialize;

#[derive(Serialize)]
struct Claims{
    sub: String,
    name: String,
    admin: bool
}

fn main(){
    let secret = "I'm a secret".as_bytes();
    let claims = Claims{
        sub: "1234567890".to_string(),
        name: "John Doe".to_string(),
        admin: true
    };
    match jwt_hmac::create(secret, &claims) {
        Ok(token) => println!("Token: {}", token),
        Err(error) => println!("This can't be happening {}", error)
    }
}

###解码示例

use jwt_hmac;
use serde::Deserialize;

#[derive(Deserialize)]
struct Claims{
   sub: String
}

fn main(){
   let secret = "I'm a secret".as_bytes();
   match jwt_hmac::parse::<Claims>(
       secret,
       "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.azXPRJHeWcZ_B5WHtA98gsnowX5gifvMJX2hoH_4YPs"
  ){
         Ok(claims) => println!("Sub: {}", claims.sub),
         Err(error) => match error{
             jwt_hmac::Error::InvalidChecksum => println!("Secret doesn't match"),
             _ => println!("Probably not a valid JWT: {}", error)
         }
     }
}

如上述示例所示,您可以为客户端填充大量声明,并在解析时只提取有用的部分。

依赖项

~1.3–2.1MB
~47K SLoC