Struct ClientCredentialsFlow

Source
pub struct ClientCredentialsFlow<E, R>
where E: Endpoint<R> + Send, R: WebRequest,
{ /* private fields */ }
Expand description

Offers access tokens to authenticated third parties.

A client may request a token that provides access to their own resources.

Client credentials can be allowed to appear in the request body instead of being required to be passed as HTTP Basic authorization. This is not recommended and must be enabled explicitely. See allow_credentials_in_body for details.

Implementations§

Source§

impl<E, R> ClientCredentialsFlow<E, R>
where E: Endpoint<R> + Send + Sync, R: WebRequest + Send + Sync, <R as WebRequest>::Error: Send + Sync,

Source

pub fn prepare(endpoint: E) -> Result<Self, E::Error>

Check that the endpoint supports the necessary operations for handling requests.

Binds the endpoint to a particular type of request that it supports, for many implementations this is probably single type anyways.

§Panics

Indirectly execute may panic when this flow is instantiated with an inconsistent endpoint, for details see the documentation of Endpoint and execute. For consistent endpoints, the panic is instead caught as an error here.

Source

pub fn allow_credentials_in_body(&mut self, allow: bool)

Credentials in body should only be enabled if use of HTTP Basic is not possible.

Allows the request body to contain the client_secret as a form parameter. This is NOT RECOMMENDED and need not be supported. The parameters MUST NOT appear in the request URI itself.

Thus support is disabled by default and must be explicitely enabled.

Source

pub fn allow_refresh_token(&mut self, allow: bool)

Allow the refresh token to be included in the response.

According to RFC-6749 Section 4.4.3 “A refresh token SHOULD NOT be included” in the response for the client credentials grant. Following that recommendation, the default behaviour of this flow is to discard any refresh token that is returned from the issuer.

If this behaviour is not what you want (it is possible that your particular application does have a use for a client credentials refresh token), you may enable this feature.

Source

pub async fn execute(&mut self, request: R) -> Result<R::Response, E::Error>

Use the checked endpoint to check for authorization for a resource.

§Panics

When the registrar, authorizer, or issuer returned by the endpoint is suddenly None when previously it was Some(_).

Auto Trait Implementations§

§

impl<E, R> Freeze for ClientCredentialsFlow<E, R>
where E: Freeze,

§

impl<E, R> RefUnwindSafe for ClientCredentialsFlow<E, R>

§

impl<E, R> Send for ClientCredentialsFlow<E, R>
where R: Send,

§

impl<E, R> Sync for ClientCredentialsFlow<E, R>
where E: Sync, R: Sync,

§

impl<E, R> Unpin for ClientCredentialsFlow<E, R>
where E: Unpin, R: Unpin,

§

impl<E, R> UnwindSafe for ClientCredentialsFlow<E, R>
where E: UnwindSafe, R: UnwindSafe,

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, 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> 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 = 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> ErasedDestructor for T
where T: 'static,