pub struct CompositeAuthenticator { /* private fields */ }Expand description
The gateway’s single authenticator: dispatches on the request’s credential shape (X-API-Key / Basic / Bearer / verified client certificate) and consults the credential registry plus the configured JWT providers.
Implementations§
Source§impl CompositeAuthenticator
impl CompositeAuthenticator
Sourcepub fn disabled() -> Self
pub fn disabled() -> Self
The disabled authenticator: no registry, no providers, anonymous
for everything (pass-through mode). The dataplane’s placeholder
before Self::build runs.
Sourcepub fn build(
gateway: &Gateway,
store: Option<Arc<StateStore>>,
jwks_caches: &mut HashMap<String, Arc<JwksCacheEntry>>,
obs: Option<&Observability>,
pepper: Option<&Arc<Zeroizing<Vec<u8>>>>,
nonce_cache: Arc<NonceCache>,
oidc_cache: Arc<OidcIntrospectionCache>,
) -> Arc<Self>
pub fn build( gateway: &Gateway, store: Option<Arc<StateStore>>, jwks_caches: &mut HashMap<String, Arc<JwksCacheEntry>>, obs: Option<&Observability>, pepper: Option<&Arc<Zeroizing<Vec<u8>>>>, nonce_cache: Arc<NonceCache>, oidc_cache: Arc<OidcIntrospectionCache>, ) -> Arc<Self>
Build from one config generation. store is the DWARA_STATE_DB
store when deployed; without it credentials come from config,
hashed in-memory. jwks_caches carries JWKS cache entries ACROSS
rebuilds (keyed by URL) so reloads keep rotation state, and
nonce_cache carries the HMAC replay-nonce store across rebuilds
the same way (DW-036). pepper (#124) is the per-deployment
credential pepper — an Arc CLONE of the dataplane’s Zeroizing
holder (no byte copy; the bytes zeroize when the last holder
drops), resolved by the CALLER through the SecretSource extension
seam (this domain must not import extensions) — or None for
legacy-only mode. oidc_cache (DW-034) is the shared
introspection cache carried across rebuilds (the
jwks_caches/oauth2_token_cache precedent).
Trait Implementations§
Source§impl Authenticator for CompositeAuthenticator
impl Authenticator for CompositeAuthenticator
Auto Trait Implementations§
impl !Freeze for CompositeAuthenticator
impl !RefUnwindSafe for CompositeAuthenticator
impl Send for CompositeAuthenticator
impl Sync for CompositeAuthenticator
impl Unpin for CompositeAuthenticator
impl !UnwindSafe for CompositeAuthenticator
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more