1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//! OAuth 2.0 / OIDC SSO client support.
//!
//! Enabled by the `sso` Cargo feature:
//!
//! ```toml
//! rust-web-server = { version = "17", features = ["sso"] }
//! ```
//!
//! # Quick start
//!
//! ```rust,no_run
//! use std::sync::Arc;
//! use rust_web_server::app::App;
//! use rust_web_server::core::New;
//! use rust_web_server::session::SessionStore;
//! use rust_web_server::sso::{OidcAuth, OidcConfig};
//!
//! let sessions = Arc::new(SessionStore::new(86_400));
//! let config = OidcConfig::google(
//! "my-client-id",
//! "my-client-secret",
//! "https://example.com/auth/callback",
//! );
//! let app = App::new().wrap(OidcAuth::new(config, sessions));
//! ```
//!
//! # Module layout
//!
//! | Sub-module | Purpose |
//! |-----------------|--------------------------------------------------------|
//! | [`config`] | [`OidcConfig`] + provider presets + `from_env()` |
//! | [`discovery`] | [`OidcProvider`] endpoints + hardcoded presets |
//! | [`jwks`] | [`JwksCache`], JWT RS256/ES256 verify, [`OidcClaims`] |
//! | [`pkce`] | [`PkceVerifier`], [`PkceChallenge`], base64url |
//! | [`client`] | [`OidcClient`]: auth URL, token exchange, user info |
//! | [`oidc_auth`] | [`OidcAuth`] middleware |
pub
// ── public re-exports ─────────────────────────────────────────────────────────
pub use ;
pub use OidcConfig;
pub use OidcProvider;
pub use ;
pub use OidcAuth;
pub use ;
// ── error type ────────────────────────────────────────────────────────────────
/// An error produced by the SSO / OIDC flow.
;