Skip to main content

TokenClaims

Struct TokenClaims 

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

What an adapter established about a presented token, before this crate’s own rules ran.

“Established” means the adapter verified the signature (JWT) or asked the authorization server (introspection). It is deliberately not a type that can be built from a raw string in this crate: there is no path from an Authorization header to a TokenClaims that skips the adapter, because that is the property that keeps a decode from becoming a verify.

Implementations§

Source§

impl TokenClaims

Source

pub fn new() -> Self

Claims with nothing in them, for an adapter to fill in.

Source

pub fn with_subject(self, subject: impl Into<Arc<str>>) -> Self

Sets the subject — who the token is about.

Source

pub fn with_issuer(self, issuer: impl Into<Arc<str>>) -> Self

Sets the issuer that minted the token.

Source

pub fn with_audience(self, audience: ResourceUri) -> Self

Adds an audience entry.

A builder rather than a setter because RFC 7519 §4.1.3 allows aud to be either a single string or an array, and both have to land in the same place.

Source

pub fn with_audience_string(self, audience: impl AsRef<str>) -> Self

Adds an audience entry that arrives as a string.

Skipped rather than fatal when it does not parse. An aud entry that is not an absolute URI cannot equal this server’s resource, so ignoring it and letting the audience check decide is the same answer as refusing — and a server that names one malformed audience alongside a valid one has still issued a usable token, which refusing outright would throw away.

Source

pub const fn with_expiry(self, at: SystemTime) -> Self

Sets when the token stops being valid.

Source

pub const fn with_not_before(self, at: SystemTime) -> Self

Sets when the token starts being valid.

Source

pub fn with_scope(self, scope: impl Into<Arc<str>>) -> Self

Declares a scope the token carries.

Source

pub fn subject(&self) -> Option<&str>

The subject, if the token named one.

Source

pub fn issuer(&self) -> Option<&str>

The issuer, if the token named one.

Source

pub fn audience(&self) -> &[ResourceUri]

Every audience entry, already canonicalised.

Source

pub fn scopes(&self) -> &[Arc<str>]

The scope strings, untranslated.

Source

pub fn is_audience(&self, resource: &ResourceUri) -> bool

Whether the token is bound to resource.

Exact equality against a canonicalised ResourceUri, and equality against any element of aud — which is what RFC 7519 §4.1.3 means by an array audience. “Contains the resource” is the same predicate; what it is not is “contains the resource’s host”, which is the check that would let a sibling server’s token through.

Trait Implementations§

Source§

impl Clone for TokenClaims

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for TokenClaims

Source§

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

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

impl Default for TokenClaims

Source§

fn default() -> Self

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

impl Eq for TokenClaims

Source§

impl PartialEq for TokenClaims

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for TokenClaims

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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