Struct OAuthRegistrationStore

Source
pub struct OAuthRegistrationStore { /* private fields */ }
Available on non-WebAssembly only.
Expand description

An API to store and restore OAuth 2.0 client registrations.

This stores dynamic client registrations in a file, and accepts “static” client registrations via OAuthRegistrationStore::with_static_registrations(), for servers that don’t support dynamic client registration.

If the client metadata passed to this API changes, the previous registrations that were stored in the file are invalidated, allowing to re-register with the new metadata.

The purpose of storing client IDs outside of the state store or separate from the user’s session is that it allows to reuse the same client ID between user sessions on the same server.

Implementations§

Source§

impl OAuthRegistrationStore

Source

pub async fn new( file: PathBuf, metadata: Raw<ClientMetadata>, ) -> Result<Self, OAuthRegistrationStoreError>

Creates a new registration store.

This method creates the file’s parent directory if it doesn’t exist.

§Arguments
  • file - A file path where the registrations will be stored. This previously took a directory and stored the registrations with the path supplied_directory/oidc/registrations.json.

  • metadata - The metadata used to register the client. If this changes compared to the value stored in the file, any stored registrations will be invalidated so the client can re-register with the new data.

Source

pub fn with_static_registrations( self, static_registrations: HashMap<Url, ClientId>, ) -> Self

Add static registrations to the store.

Static registrations are used for servers that don’t support dynamic registration but provide a client ID out-of-band.

These registrations are not stored in the file and must be provided each time.

Source

pub async fn client_id( &self, issuer: &Url, ) -> Result<Option<ClientId>, OAuthRegistrationStoreError>

Returns the client ID registered for a particular issuer or None if a registration hasn’t been made.

§Arguments
  • issuer - The issuer to look up.
§Errors

Returns an error if the file could not be read, or if the data in the file could not be deserialized.

Source

pub async fn set_and_write_client_id( &self, client_id: ClientId, issuer: Url, ) -> Result<(), OAuthRegistrationStoreError>

Stores a new client ID registration for a particular issuer.

If a client ID has already been stored for the given issuer, this will overwrite the old value.

§Arguments
  • client_id - The client ID obtained after registration.

  • issuer - The issuer associated with the client ID.

§Errors

Returns an error if the file could not be read from or written to, or if the data in the file could not be (de)serialized.

Trait Implementations§

Source§

impl Debug for OAuthRegistrationStore

Source§

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

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

impl From<OAuthRegistrationStore> for ClientRegistrationMethod

Source§

fn from(value: OAuthRegistrationStore) -> Self

Converts to this type from the input type.

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
§

impl<T> CompatExt for T

§

fn compat(self) -> Compat<T>

Applies the [Compat] adapter by value. Read more
§

fn compat_ref(&self) -> Compat<&T>

Applies the [Compat] adapter by shared reference. Read more
§

fn compat_mut(&mut self) -> Compat<&mut T>

Applies the [Compat] adapter by mutable reference. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, UT> HandleAlloc<UT> for T
where T: Send + Sync,

Source§

fn new_handle(value: Arc<T>) -> Handle

Create a new handle for an Arc value Read more
Source§

fn clone_handle(handle: Handle) -> Handle

Clone a handle Read more
Source§

fn consume_handle(handle: Handle) -> Arc<T>

Consume a handle, getting back the initial Arc<>
Source§

fn get_arc(handle: Handle) -> Arc<Self>

Get a clone of the Arc<> using a “borrowed” handle. Read more
Source§

impl<T, W> HasTypeWitness<W> for T
where W: MakeTypeWitness<Arg = T>, T: ?Sized,

Source§

const WITNESS: W = W::MAKE

A constant of the type witness
Source§

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

Source§

const TYPE_EQ: TypeEq<T, <T as Identity>::Type> = TypeEq::NEW

Proof that Self is the same type as Self::Type, provides methods for casting between Self and Self::Type.
Source§

type Type = T

The same type as Self, used to emulate type equality bounds (T == U) with associated type equality constraints (T: Identity<Type = U>).
§

impl<T> Instrument for T

§

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

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

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. 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 = 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

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<T> Any for T
where T: Any,

Source§

impl<T> AsyncTraitDeps for T

Source§

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

Source§

impl<T> MaybeSendSync for T

Source§

impl<T> SendOutsideWasm for T
where T: Send,

Source§

impl<T> SyncOutsideWasm for T
where T: Sync,