Skip to main content

TokenRequest

Struct TokenRequest 

Source
pub struct TokenRequest<'a> { /* private fields */ }
Expand description

One token request, assembled from an AuthorizedCode and a registration.

Borrowed rather than owned because every member already exists in one of those two values and copying it would create a second copy of a credential to keep alive for no reason.

§Examples

An implementor reads what it needs and encodes it however its transport requires; the oauth adapter reads all of it:

struct Transport;

impl TokenEndpoint for Transport {
    async fn redeem(
        &self,
        request: TokenRequest<'_>,
    ) -> Result<IssuedToken, TokenEndpointError> {
        let body = format!(
            "grant_type=authorization_code&code={}&redirect_uri={}",
            request.code(),
            request.redirect_uri(),
        );
        println!("{body}");
        .map_err(TokenEndpointError::Refused)
    }
}

Implementations§

Source§

impl<'a> TokenRequest<'a>

Source

pub const fn code(&self) -> &'a str

The authorization code to redeem.

Source

pub const fn redirect_uri(&self) -> &'a str

The redirect URI, exactly as the authorization request carried it.

Source

pub const fn code_verifier(&self) -> &'a CodeVerifier

The PKCE verifier the code_challenge was derived from.

Source

pub const fn client_id(&self) -> &'a ClientId

The client this exchange is being conducted as.

Source

pub const fn client_secret(&self) -> Option<&'a ClientSecret>

The secret, for a confidential client only.

None for a public client — one registered through a client identity metadata document, which has nowhere to keep a secret that is still secret. An adapter must omit the member in that case rather than sending it empty: an empty client_secret is a value, and RFC 6749 §2.3.1 treats the presence of the member as the statement that the client is confidential.

Source

pub const fn auth_method(&self) -> TokenAuthMethod

How the client authenticates at the token endpoint.

Source

pub const fn scope(&self) -> Option<&'a str>

The scope to send with the token request, if any.

The authorization page lets a client that wants a refresh token add offline_access “to the scope parameter of the authorization and token requests”, so the token request carries the scope the authorization request asked for.

Source

pub const fn resource(&self) -> &'a ResourceParameters

The RFC 8707 resource indicators this grant is bound to.

Repeated as one resource member per indicator, which is the encoding §2 of that RFC defines.

Trait Implementations§

Source§

impl<'a> Debug for TokenRequest<'a>

Source§

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

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

impl Display for TokenRequest<'_>

Rendered only so a TokenRequest in a log line names its fields without their values.

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for TokenRequest<'a>

§

impl<'a> RefUnwindSafe for TokenRequest<'a>

§

impl<'a> Send for TokenRequest<'a>

§

impl<'a> Sync for TokenRequest<'a>

§

impl<'a> Unpin for TokenRequest<'a>

§

impl<'a> UnsafeUnpin for TokenRequest<'a>

§

impl<'a> UnwindSafe for TokenRequest<'a>

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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