[][src]Crate jwts

Rust implementation of JSON Web Tokens, see https://tools.ietf.org/html/rfc7519

Examples

Sign

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_or_default();

assert_eq!(token, "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzZWEifQ.L0DLtDjydcSK-c0gTyOYbmUQ_LUCZzqAGCINn2OLhFs");

Parse and Verify

use jwts::{Claims, jws};
use jwts::jws::{Algorithm, Config, Key, SignatureValidation, Token};

let key = Key::new(b"secret", Algorithm::HS256);
let signature_validation = SignatureValidation::Key(key);

// use key resolver like:
// let signature_validation = SignatureValidation::KeyResolver(|header, payload| {
//     // return a Key here
// });

let config = Config {
signature_validation,
iat_validation: true,
nbf_validation: true,
exp_validation: true,
expected_iss: Some("sea".to_owned()),
expected_sub: None,
expected_aud: None,
expected_jti: None,
};

let token = "a jwt token";

let token: Option<Token<Claims>> = jws::parse(token, &config)
.map(Option::Some)
.unwrap_or_else(|err| {
println!("{:?}", err.kind());
None
});
println!("{:?}", token);

Custom Claims

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

#[macro_use]
extern crate serde_derive;

#[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_or_default();
let token: Token<CustomClaims> = jws::parse_validate_none(&token).unwrap();
println!("{:?}", token);

Re-exports

pub use crate::error::Error;
pub use crate::error::ErrorKind;

Modules

error

Errors

jws

Signed JWTs, see https://tools.ietf.org/html/rfc7515

Structs

Claims

Registered Claim Names, see https://tools.ietf.org/html/rfc7519#section-4.1