Skip to main content

AsyncVerifier

Struct AsyncVerifier 

Source
pub struct AsyncVerifier { /* private fields */ }
Expand description

Async verifier with JWKS caching support

Implementations§

Source§

impl AsyncVerifier

Source

pub fn with_static_key( key: VerifyingKey, issuer: impl Into<String>, audience: impl Into<String>, ) -> AsyncVerifier

Create a verifier with a static key

Source

pub fn with_jwks( jwks: Jwks, issuer: impl Into<String>, audience: impl Into<String>, ) -> AsyncVerifier

Create a verifier with JWKS

Source

pub fn with_jwks_url( url: impl Into<String>, issuer: impl Into<String>, audience: impl Into<String>, ) -> AsyncVerifier

Create a verifier that fetches JWKS from a URL

Source

pub fn with_origin_validation(self) -> AsyncVerifier

Require origin validation on verified tokens.

Source

pub fn with_claim_seal_keys(self, keys: ClaimSealKeys) -> AsyncVerifier

Open sealed claims with these keys. Without them, a token that carries sealed claims is refused.

Source

pub fn with_cache_duration(self, duration: Duration) -> AsyncVerifier

Set how long fetched JWKS keys count as fresh. Once they are stale, requests try to refetch them (subject to the minimum refresh interval) and keep verifying against them until a fetch succeeds.

Source

pub fn with_min_refresh_interval(self, interval: Duration) -> AsyncVerifier

Set the minimum time from the end of one JWKS fetch to the start of the next, whatever triggers it: expiry, an unknown kid, or a failed fetch. A key published at the JWKS URL is picked up within about this interval. Defaults to DEFAULT_MIN_JWKS_REFRESH_INTERVAL.

Source

pub async fn verify( &self, token: &str, expected_origin: Option<&str>, expected_client_ip: Option<&str>, ) -> Result<AuthContext, VerifyError>

Verify a token with automatic JWKS fetching and caching

Source

pub async fn refresh_cache(&self) -> Result<(), VerifyError>

Fetch the JWKS from the configured URL now, ignoring the minimum refresh interval. Waits for a fetch already in flight. On failure the previously fetched keys stay in use.

Source

pub async fn verify_with_cache( &self, token: &str, expected_origin: Option<&str>, expected_client_ip: Option<&str>, ) -> Result<AuthContext, VerifyError>

Verify a token against the JWKS fetched from the configured URL.

Fresh keys are used directly. An unknown kid, stale keys, or no keys trigger a refetch, but at most one fetch runs at a time and the next waits out the minimum refresh interval, so tokens with made-up key IDs cannot drive outbound requests. If the fetch fails or is skipped, the last successfully fetched keys are used.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more