JwtValidationOptions

Struct JwtValidationOptions 

Source
pub struct JwtValidationOptions {
    pub trusted_issuers: Option<Vec<String>>,
    pub jwks_uri: Option<String>,
    pub algorithms: Option<Vec<Algorithm>>,
    pub required_claims: Option<Vec<String>>,
    pub leeway_seconds: Option<u64>,
    pub validate_expiry: bool,
    pub jwks_cache_duration_hours: u64,
}
Expand description

JWT validation options

Configuration for JWT validation including security parameters like trusted issuers, allowed algorithms, and required claims. These options align with the harmony-dsl JWT authentication middleware schema.

Fields§

§trusted_issuers: Option<Vec<String>>

List of trusted JWT token issuers. When specified, JWTs must have an ‘iss’ claim matching one of these values exactly. This prevents attacks where an attacker stands up their own JWKS endpoint and issues fraudulent tokens.

STRONGLY RECOMMENDED: Always configure this in production for security.

§jwks_uri: Option<String>

Explicit JWKS URI for fetching public keys. When specified, this overrides the auto-discovery of JWKS from the issuer’s well-known endpoint. Example: “https://auth.example.com/.well-known/jwks.json”

§algorithms: Option<Vec<Algorithm>>

List of allowed JWT signing algorithms. If not specified, defaults to RS256 only. Example: vec![Algorithm::RS256, Algorithm::ES256]

§required_claims: Option<Vec<String>>

List of claims that must be present in the JWT. Standard claims like ‘iss’, ‘sub’, and ‘exp’ are always validated. Use this to require additional custom claims. Example: vec![“email”.to_string(), “scope”.to_string()]

§leeway_seconds: Option<u64>

Leeway in seconds for validating exp (expiration) and nbf (not before) claims to account for clock skew between systems. Valid range: 0-300 seconds.

§validate_expiry: bool

Whether to validate the JWT expiration (exp) claim. Default: true

§jwks_cache_duration_hours: u64

Duration in hours to cache JWKS keys. Default: 24 hours

Implementations§

Source§

impl JwtValidationOptions

Source

pub fn new() -> Self

Create a new JwtValidationOptions with default values

Source

pub fn with_trusted_issuers(self, issuers: Vec<String>) -> Self

Set trusted issuers (builder pattern)

Source

pub fn with_jwks_uri(self, uri: String) -> Self

Set JWKS URI (builder pattern)

Source

pub fn with_algorithms(self, algorithms: Vec<Algorithm>) -> Self

Set allowed algorithms (builder pattern)

Source

pub fn with_required_claims(self, claims: Vec<String>) -> Self

Set required claims (builder pattern)

Source

pub fn with_leeway_seconds(self, leeway: u64) -> Self

Set leeway seconds (builder pattern)

Source

pub fn with_validate_expiry(self, validate: bool) -> Self

Set validate expiry (builder pattern)

Source

pub fn with_jwks_cache_duration_hours(self, hours: u64) -> Self

Set JWKS cache duration (builder pattern)

Trait Implementations§

Source§

impl Clone for JwtValidationOptions

Source§

fn clone(&self) -> JwtValidationOptions

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for JwtValidationOptions

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for JwtValidationOptions

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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: 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: 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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
Source§

impl<T> ErasedDestructor for T
where T: 'static,