#[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>,
}client or server 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 RFC 8414 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
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.issuer: UrlThe authorization server’s issuer identifier.
This should be a URL with no query or fragment components.
URL of the authorization server’s authorization endpoint (RFC 6749).
token_endpoint: UrlURL of the authorization server’s token endpoint (RFC 6749).
registration_endpoint: Option<Url>URL of the authorization server’s OAuth 2.0 Dynamic Client Registration endpoint (RFC 7591).
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 (RFC 7591).
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 (RFC 7591).
This field must include GrantType::AuthorizationCode and
GrantType::RefreshToken.
revocation_endpoint: UrlURL of the authorization server’s OAuth 2.0 revocation endpoint (RFC 7009).
code_challenge_methods_supported: BTreeSet<CodeChallengeMethod>List of Proof Key for Code Exchange (PKCE) code challenge methods supported by this authorization server (RFC 7636).
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).
unstable-msc4108 only.URL of the authorization server’s device authorization endpoint (RFC 8628).
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
impl AuthorizationServerMetadata
Sourcepub fn validate_urls(&self) -> Result<(), AuthorizationServerMetadataUrlError>
pub fn validate_urls(&self) -> Result<(), AuthorizationServerMetadataUrlError>
Strict validation of the URLs in this AuthorizationServerMetadata.
This checks that:
-
The
issueris a valid URL using anhttpsscheme and without a query or fragment. -
All the URLs use an
httpsscheme.
Sourcepub fn insecure_validate_urls(
&self,
) -> Result<(), AuthorizationServerMetadataUrlError>
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.
Sourcepub fn is_action_management_action_supported(
&self,
action: &AccountManagementAction,
) -> bool
pub fn is_action_management_action_supported( &self, action: &AccountManagementAction, ) -> bool
Whether the given account management action is advertised as supported by the server.
This function tries to be backwards compatible with unstable implementations by checking both the stable and unstable values of the given action, if they differ.
Sourcepub fn action_management_url_with_action(
&self,
action: AccountManagementActionData<'_>,
) -> Option<Url>
pub fn action_management_url_with_action( &self, action: AccountManagementActionData<'_>, ) -> Option<Url>
Build the action management URL with the given action.
This function tries to be backwards compatible with unstable implementations by selecting the proper action value to add to the URL (stable or unstable) given the supported actions advertised in this metadata. If the action is not present in the metadata, the stable value is used.
Returns None if the action_management_url is None.
Trait Implementations§
Source§impl Clone for AuthorizationServerMetadata
impl Clone for AuthorizationServerMetadata
Source§fn clone(&self) -> AuthorizationServerMetadata
fn clone(&self) -> AuthorizationServerMetadata
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AuthorizationServerMetadata
impl Debug for AuthorizationServerMetadata
Source§impl<'de> Deserialize<'de> for AuthorizationServerMetadata
impl<'de> Deserialize<'de> for AuthorizationServerMetadata
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for AuthorizationServerMetadata
impl RefUnwindSafe for AuthorizationServerMetadata
impl Send for AuthorizationServerMetadata
impl Sync for AuthorizationServerMetadata
impl Unpin for AuthorizationServerMetadata
impl UnwindSafe for AuthorizationServerMetadata
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
§fn new_handle(value: Arc<T>) -> Handle
fn new_handle(value: Arc<T>) -> Handle
§unsafe fn clone_handle(handle: Handle) -> Handle
unsafe fn clone_handle(handle: Handle) -> Handle
§unsafe fn consume_handle(handle: Handle) -> Arc<T>
unsafe fn consume_handle(handle: Handle) -> Arc<T>
Arc<> Read more