Type Definition biscuit::JWT
[−]
[src]
type JWT<T, H> = Compact<ClaimsSet<T>, H>;
A convenience type alias of the common "JWT" which is a secured/unsecured compact JWS.
Type T
is the type of the private claims, and type H
is the type of private header fields
Examples
Encoding and decoding with HS256
extern crate biscuit; #[macro_use] extern crate serde_derive; use std::str::FromStr; use biscuit::*; use biscuit::jws::*; use biscuit::jwa::*; // Define our own private claims #[derive(Debug, PartialEq, Clone, Serialize, Deserialize)] struct PrivateClaims { company: String, department: String, } let signing_secret = Secret::Bytes("secret".to_string().into_bytes()); let expected_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.\ eyJpc3MiOiJodHRwczovL3d3dy5hY21lLmNv\ bS8iLCJzdWIiOiJKb2huIERvZSIsImF1ZCI6I\ mh0dHM6Ly9hY21lLWN1c3RvbWVyLmNvbS8iLC\ JuYmYiOjEyMzQsImNvbXBhbnkiOiJBQ01FIiwi\ ZGVwYXJ0bWVudCI6IlRvaWxldCBDbG\ VhbmluZyJ9.dnx1OmRZSFxjCD1ivy4lveTT-sxay5Fq6vY6jnJvqeI"; let expected_claims = ClaimsSet::<PrivateClaims> { registered: RegisteredClaims { issuer: Some(FromStr::from_str("https://www.acme.com").unwrap()), subject: Some(FromStr::from_str("John Doe").unwrap()), audience: Some(SingleOrMultiple::Single(FromStr::from_str("htts://acme-customer.com").unwrap())), not_before: Some(1234.into()), ..Default::default() }, private: PrivateClaims { department: "Toilet Cleaning".to_string(), company: "ACME".to_string(), }, }; let expected_jwt = JWT::new_decoded(From::from( RegisteredHeader { algorithm: SignatureAlgorithm::HS256, ..Default::default() }), expected_claims.clone()); let token = expected_jwt .into_encoded(&signing_secret).unwrap(); let token = token.unwrap_encoded().to_string(); assert_eq!(expected_token, token); // Now, send `token` to your clients // ... some time later, we get token back! let token = JWT::<_, biscuit::Empty>::new_encoded(&token); let token = token.into_decoded(&signing_secret, SignatureAlgorithm::HS256).unwrap(); assert_eq!(*token.payload().unwrap(), expected_claims);