Rust JWT Authentication
Implement JWT authentication in Rust using the jsonwebtoken crate with HMAC-SHA256 signing, claims validation, expiry checking, and Axum extractor for.
Code
use jsonwebtoken::{decode, encode, DecodingKey, EncodingKey, Validation, Header};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct Claims {
sub: String,
exp: usize,
}
fn create_token(user_id: &str, secret: &str) -> String {
let claims = Claims { sub: user_id.into(), exp: 9999999999 };
encode(&Header::default(), &claims, &EncodingKey::from_secret(secret.as_ref())).unwrap()
}
fn verify_token(token: &str, secret: &str) -> Option<Claims> {
let data = decode::<Claims>(token, &DecodingKey::from_secret(secret.as_ref()), &Validation::default());
data.ok().map(|d| d.claims)
}