Crate axum_jwt

Source
Expand description

axum-jwt

JSON Web Token extractors and middleware for axum framework

§About

The library provides extractors for performing JWT authentication. Under the hood, tokens are parsed using the jsonwebtoken crate. For more details, see the documentation.

§Example

In this example, the request token is validated and the username is extracted:

use {
    axum::{Router, routing},
    axum_jwt::{Claims, Decoder, jsonwebtoken::DecodingKey},
    serde::Deserialize,
    std::io::Error,
    tokio::net::TcpListener,
};

#[derive(Deserialize)]
struct User {
    sub: String,
}

async fn hello(Claims(u): Claims<User>) -> String {
    format!("Hello, {}!", u.sub)
}

#[tokio::main]
async fn main() -> Result<(), Error> {
    let decoder = Decoder::from_key(DecodingKey::from_secret(b"secret"));

    let app = Router::new()
        .route("/", routing::get(hello))
        .with_state(decoder);

    let listener = TcpListener::bind("0.0.0.0:3000").await?;
    axum::serve(listener, app).await
}

In case of failed authentication, for example if the token is invalid or expired, a 401 Unauthorized status code is returned.

Re-exports§

pub use crate::layer::layer;
pub use jsonwebtoken;

Modules§

layer
Middleware types and traits.

Structs§

Bearer
The token extraction from a header with Bearer authentication scheme.
Claims
JWT extractor type returning only claims.
Decoder
A decoder for JSON Web Tokens (JWTs).
Token
JWT extractor type.

Enums§

Error
Errors that can occur during authentication.

Traits§

Extract
Trait for token extraction.