json_web_tolkien/lib.rs
1//! Deserialization/Serialization of JWS for JWT.
2//!
3//! This crate provides structs and ser(de) for json web tokens and
4//! json web signatures.
5//!
6//! It does not supply signature verification, this allows you to choose
7//! and maintain the specific algorithm libraries that handle signature
8//! verification.
9//!
10//! # Example
11//!
12//! ```rust
13//!
14//! use json_web_token::prelude::*;
15//! use serde::Deserialize;
16//! use serde::de::{value, IntoDeserializer};
17//! use std::borrow::Cow;
18//!
19//! type Token = Jwt<Claims, Header>;
20//!
21//! #[derive(Deserialize)]
22//! struct Header {
23//! #[serde(alias = "alg")]
24//! algorithm: Algorithm
25//! }
26//!
27//! #[derive(Deserialize)]
28//! pub struct Claims {
29//! #[serde(alias = "sub")]
30//! user_id: String,
31//! }
32//!
33//! fn decode(input: &str) -> Result<(Jws, Token), value::Error> {
34//!
35//! let jws : Jws;
36//! let jwt : Token;
37//!
38//! {
39//! let de = input.into_deserializer();
40//! jws = Jws::deserialize(de)?;
41//! }
42//!
43//! {
44//! let encoded_token : Cow<str> = jws.encoded_token();
45//! let de = encoded_token.as_ref().into_deserializer();
46//!
47//! jwt = Token::deserialize(de)?;
48//! }
49//!
50//! Ok((jws, jwt))
51//! }
52//!
53//! let valid_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWUsImlhdCI6MTUxNjIzOTAyMn0.KMUFsIDTnFmyG3nMiGM6H9FNFUROf3wh7SmqJp-QV30";
54//!
55//! let (jws, jwt) = decode(&valid_token).unwrap();
56//!
57//! let signature : Cow<[u8]> = jws.signature();
58//!
59//! let claims : &Claims = jwt.claims();
60//! let header : &Header = jwt.header();
61//! ```
62
63pub mod algorithm;
64pub mod error;
65pub mod jws;
66pub mod jwt;
67pub mod numeric_date;
68pub mod ser;
69pub mod util;
70
71pub mod prelude {
72 pub use crate::{algorithm::Algorithm, jws::Jws, jwt::Jwt, numeric_date::NumericDate};
73}