jwt-rust

jwts jwts jwts jwts

jwt

A rust implementation of JSON Web Tokens.

Examples

Sign

```rust use jwts::Claims; use jwts::jws::{Algorithm, Key, Token};

let mut claims = Claims::new(); claims.iss = Some("sea".to_owned());

let mut token = Token::with_payload(claims);

// custom the header like: // token.header.cty = Some("application/example".to_owned());

let key = Key::new(b"secret", Algorithm::HS256); let token = token.sign(&key).unwrap();

asserteq!(token, "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzZWEifQ.L0DLtDjydcSK-c0gTyOYbmUQLUCZzqAGCINn2OLhFs"); ```

Verify

```rust use jwts::{Claims, ValidationConfig}; use jwts::jws::{Algorithm, Key, Token};

let token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzZWEiLCJleHAiOjEwNTc3MDkxMDU2LCJuYmYiOjE1NzcwOTEwNTYsImlhdCI6MTU3NzA5MTA1Nn0.4HwFlFB3LMhVc2xpsGBGSO3ut1KmnFdF8JrsL589ytw";

let key = Key::new(b"secret", Algorithm::HS256); let verified: Token = Token::verifywithkey(token, &key).unwrap();

// use key resolver like: // let verified: Token = Token::verifywithkey_resolver(token, |header, payload| { // // return a Key here // }).unwrap();

println!("{:?}", verified);

// validate claims let config = ValidationConfig { iatvalidation: true, nbfvalidation: true, expvalidation: true, expectediss: Some("sea".toowned()), expectedsub: None, expectedaud: None, expectedjti: None, }; verified.validate_claims(&config).unwrap(); ```

Custom Claims

```rust use jwts::jws::{Algorithm, Key, Token}; use serde_derive::{Deserialize, Serialize};

[derive(Debug, Serialize, Deserialize)]

struct CustomClaims { iss: String, }

let claims = CustomClaims { iss: "sea".to_owned(), };

let mut token = Token::with_payload(claims); let key = Key::new(b"secret", Algorithm::HS256); let token = token.sign(&key).unwrap(); let token: Token = Token::decode(&token).unwrap(); // here decode without verification for demonstration println!("{:?}", token); ```

Algorithms

Sign and verify use crate ring.

More

RFC 7519 JSON Web Token (JWT)

RFC 7515 JSON Web Signature (JWS)

RFC 7518 JSON Web Algorithms (JWA)

License

Apache 2.0 License