ruma::api::client::discovery::get_authorization_server_metadata::msc2965

Struct AuthorizationServerMetadata

Source
#[non_exhaustive]
pub struct AuthorizationServerMetadata {
Show 13 fields pub issuer: Url, pub authorization_endpoint: Url, pub token_endpoint: Url, pub registration_endpoint: Option<Url>, pub response_types_supported: BTreeSet<ResponseType>, pub response_modes_supported: BTreeSet<ResponseMode>, pub grant_types_supported: BTreeSet<GrantType>, pub revocation_endpoint: Url, pub code_challenge_methods_supported: BTreeSet<CodeChallengeMethod>, pub account_management_uri: Option<Url>, pub account_management_actions_supported: BTreeSet<AccountManagementAction>, pub device_authorization_endpoint: Option<Url>, pub prompt_values_supported: Vec<Prompt>,
}
Available on (crate features client-api-c or client-api-s) and (crate features client or server) and crate feature api and crate feature unstable-msc2965 only.
Expand description

Metadata describing the configuration of the authorization server.

While the metadata properties and their values are declared for OAuth 2.0 in RFC8414 and other RFCs, this type only supports properties and values that are used for Matrix, as specified in MSC3861 and its dependencies.

This type is validated to have at least all the required values during deserialization. The URLs are not validated during deserialization, to validate them use AuthorizationServerMetadata::validate_urls() or AuthorizationServerMetadata::insecure_validate_urls().

This type has no constructor, it should be sent as raw JSON directly.

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§issuer: Url

The authorization server’s issuer identifier.

This should be a URL with no query or fragment components.

§authorization_endpoint: Url

URL of the authorization server’s authorization endpoint (RFC6749).

§token_endpoint: Url

URL of the authorization server’s token endpoint (RFC6749).

§registration_endpoint: Option<Url>

URL of the authorization server’s OAuth 2.0 Dynamic Client Registration endpoint (RFC7591).

§response_types_supported: BTreeSet<ResponseType>

List of the OAuth 2.0 response_type values that this authorization server supports.

Those values are the same as those used with the response_types parameter defined by OAuth 2.0 Dynamic Client Registration (RFC7591).

This field must include ResponseType::Code.

§response_modes_supported: BTreeSet<ResponseMode>

List of the OAuth 2.0 response_mode values that this authorization server supports.

Those values are specified in OAuth 2.0 Multiple Response Type Encoding Practices.

This field must include ResponseMode::Query and ResponseMode::Fragment.

§grant_types_supported: BTreeSet<GrantType>

List of the OAuth 2.0 grant_type values that this authorization server supports.

Those values are the same as those used with the grant_types parameter defined by OAuth 2.0 Dynamic Client Registration (RFC7591).

This field must include GrantType::AuthorizationCode and GrantType::RefreshToken.

§revocation_endpoint: Url

URL of the authorization server’s OAuth 2.0 revocation endpoint (RFC7009).

§code_challenge_methods_supported: BTreeSet<CodeChallengeMethod>

List of Proof Key for Code Exchange (PKCE) code challenge methods supported by this authorization server (RFC7636).

This field must include CodeChallengeMethod::S256.

§account_management_uri: Option<Url>

URL where the user is able to access the account management capabilities of the authorization server (MSC4191).

§account_management_actions_supported: BTreeSet<AccountManagementAction>

List of actions that the account management URL supports (MSC4191).

§device_authorization_endpoint: Option<Url>

URL of the authorization server’s device authorization endpoint (RFC8628).

§prompt_values_supported: Vec<Prompt>

The Prompt values supported by the authorization server (Initiating User Registration via OpenID Connect 1.0).

Implementations§

Source§

impl AuthorizationServerMetadata

Source

pub fn validate_urls(&self) -> Result<(), AuthorizationServerMetadataUrlError>

Strict validation of the URLs in this AuthorizationServerMetadata.

This checks that:

  • The issuer is a valid URL using an https scheme and without a query or fragment.

  • All the URLs use an https scheme.

Source

pub fn insecure_validate_urls( &self, ) -> Result<(), AuthorizationServerMetadataUrlError>

Weak validation the URLs AuthorizationServerMetadata are all absolute URLs.

This only checks that the issuer is a valid URL without a query or fragment.

In production, you should prefer AuthorizationServerMetadata that also check if the URLs use an https scheme. This method is meant for development purposes, when interacting with a local authorization server.

Trait Implementations§

Source§

impl Clone for AuthorizationServerMetadata

Source§

fn clone(&self) -> AuthorizationServerMetadata

Returns a copy 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 AuthorizationServerMetadata

Source§

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

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

impl<'de> Deserialize<'de> for AuthorizationServerMetadata

Source§

fn deserialize<D>( deserializer: D, ) -> Result<AuthorizationServerMetadata, <D as Deserializer<'de>>::Error>
where D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for AuthorizationServerMetadata

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. 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, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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>).
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> 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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

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

Source§

impl<T> MaybeSendSync for T