xjp_oidc_axum/
lib.rs

1//! Axum integration for xjp-oidc
2//!
3//! Provides middleware and extractors for OIDC/OAuth2 authentication in Axum applications.
4//!
5//! # Example
6//!
7//! ```no_run
8//! use axum::{Router, routing::get};
9//! use xjp_oidc_axum::{OidcLayer, VerifiedClaims};
10//! use xjp_oidc::{JwtVerifier, MokaCacheImpl, ReqwestHttpClient};
11//! use std::sync::Arc;
12//! use std::collections::HashMap;
13//!
14//! # async fn example() {
15//! # let mut issuer_map = HashMap::new();
16//! # issuer_map.insert("test".to_string(), "https://auth.example.com".to_string());
17//! # let verifier = Arc::new(JwtVerifier::new(
18//! #     issuer_map,
19//! #     "test-audience".to_string(),
20//! #     Arc::new(ReqwestHttpClient::default()),
21//! #     Arc::new(MokaCacheImpl::new(100)),
22//! # ));
23//! // Setup your JWT verifier here
24//!
25//! let app: Router = Router::new()
26//!     .route("/protected", get(handler))
27//!     .layer(OidcLayer::new(verifier));
28//!
29//! async fn handler(claims: VerifiedClaims) -> String {
30//!     format!("Hello, user {}", claims.sub)
31//! }
32//! # }
33//! ```
34
35#![warn(missing_docs)]
36
37mod error;
38mod extractors;
39mod layer;
40
41pub use error::AuthError;
42pub use extractors::{AdminClaims, OptionalClaims, VerifiedClaims};
43pub use layer::{require_admin, AdminGuard, OidcLayer};
44
45// Re-export commonly used types from xjp-oidc
46pub use xjp_oidc::{JwtVerifier, VerifiedClaims as Claims};