pub struct DbApiKeyConfig {
pub cache_size: u64,
pub cache_ttl_secs: u64,
pub unknown_cache_ttl_secs: u64,
pub unknown_cache_size: u64,
}Expand description
Cache and audit knobs for DbApiKeyAuthProvider, read from env with defaults.
Fields§
§cache_size: u64MICROMEGAS_API_KEY_CACHE_SIZE, default 10_000.
cache_ttl_secs: u64MICROMEGAS_AUTH_CACHE_TTL_SECONDS, default 60 – a single flat,
unprefixed knob (no {prefix}_ role variant) shared with
DbAudienceGrantsConfig/DbGroupsConfig’s own positive-cache TTL: one
value governs the API-key, audience-grant, and group snapshot caches
process-wide, across every role. Also the bound on revocation latency: a
DELETE writes revoked_at but cannot invalidate a remote process’s
cache, so a revoked key keeps authenticating until this TTL elapses.
unknown_cache_ttl_secs: u64MICROMEGAS_API_KEY_UNKNOWN_CACHE_TTL_SECONDS, default 10. Shorter than
cache_ttl_secs so a freshly minted key is not masked by an earlier probe
of that same (not-yet-existing) string for longer than necessary.
unknown_cache_size: u64MICROMEGAS_API_KEY_UNKNOWN_CACHE_SIZE, default 10_000.
Implementations§
Source§impl DbApiKeyConfig
impl DbApiKeyConfig
Sourcepub fn from_env_with_prefix(prefix: &str) -> DbApiKeyConfig
pub fn from_env_with_prefix(prefix: &str) -> DbApiKeyConfig
Resolves each API_KEY_-specific knob as {prefix}_* first, falling back to the
unprefixed name, the same {prefix}_*-with-fallback convention
crate::env::resolve_prefixed_var implements for every other knob in this crate. With
an empty prefix this is identical to the unprefixed vars, so an unprefixed caller just
passes "".
cache_ttl_secs is the exception: it reads the flat, unprefixed
MICROMEGAS_AUTH_CACHE_TTL_SECONDS knob directly (prefix is ignored for this one
field), the same single process-wide value DbAudienceGrantsConfig/DbGroupsConfig
read – there is exactly one value for this knob, no per-role distinction.
Trait Implementations§
Source§impl Clone for DbApiKeyConfig
impl Clone for DbApiKeyConfig
Source§fn clone(&self) -> DbApiKeyConfig
fn clone(&self) -> DbApiKeyConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for DbApiKeyConfig
Auto Trait Implementations§
impl Freeze for DbApiKeyConfig
impl RefUnwindSafe for DbApiKeyConfig
impl Send for DbApiKeyConfig
impl Sync for DbApiKeyConfig
impl Unpin for DbApiKeyConfig
impl UnsafeUnpin for DbApiKeyConfig
impl UnwindSafe for DbApiKeyConfig
Blanket Implementations§
impl<T> Allocation for T
Source§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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].