Crate alcoholic_jwt[][src]

Implements a library for for validation of RS256 JWTs using keys from a JWKS. Nothing more, nothing less.

The name of the library stems from the potential side-effects of trying to use the other Rust libraries that are made for similar purposes.

This library is specifically aimed at developers that consume tokens from services which provide their RSA public keys in JWKS format.

Usage example (token with kid-claim)

extern crate alcoholic_jwt;

use alcoholic_jwt::{JWKS, Validation, validate, token_kid};


// The function implied here would usually perform an HTTP-GET
// on the JWKS-URL for an authentication provider and deserialize
// the result into the `alcoholic_jwt::JWKS`-struct.
let jwks: JWKS = jwks_fetching_function();

let token = some_token_fetching_function();

// Several types of built-in validations are provided:
let validations = vec![
  Validation::Issuer("auth.test.aprila.no".into()),
  Validation::SubjectPresent,
];

// If a JWKS contains multiple keys, the correct KID first
// needs to be fetched from the token headers.
let kid = token_kid(&token)
    .expect("Failed to decode token headers")
    .expect("No 'kid' claim present in token");

let jwk = jwks.find(&kid).expect("Specified key not found in set");

validate(token, jwk, validations).expect("Token validation has failed!");

Structs

JWK

Representation of a single JSON Web Key. See RFC 7517.

JWKS

Representation of a set of JSON Web Keys. See RFC 7517.

ValidJWT

Representation of a decoded and validated JSON Web Token.

Enums

Validation

Possible token claim validations. This enumeration only covers common use-cases, for other types of validations the user is encouraged to inspect the claim set manually.

ValidationError

Possible results of a token validation.

Functions

token_kid

Attempt to extract the kid-claim out of a JWT's header claims.

validate

Validate the signature of a JSON Web Token and optionally apply claim validations. Signatures are always verified before claims, and if a signature verification passes all claim validations are run and returned.