pub struct RarConfig {
pub max_authorization_details: usize,
pub supported_types: Vec<String>,
pub require_explicit_consent: bool,
pub max_resource_depth: usize,
pub default_lifetime: Duration,
pub enable_resource_discovery: bool,
pub validation_rules: Vec<RarValidationRule>,
pub type_action_mapping: HashMap<String, Vec<String>>,
}Expand description
Configuration for Rich Authorization Requests
Fields§
Maximum number of authorization details per request
supported_types: Vec<String>Supported authorization detail types
require_explicit_consent: boolWhether to require explicit user consent for each detail
max_resource_depth: usizeMaximum depth for nested resource hierarchies
default_lifetime: DurationDefault authorization detail lifetime
enable_resource_discovery: boolWhether to support resource discovery
validation_rules: Vec<RarValidationRule>Custom validation rules for authorization details
type_action_mapping: HashMap<String, Vec<String>>Supported actions per resource type
Implementations§
Source§impl RarConfig
impl RarConfig
Sourcepub fn empty() -> Self
pub fn empty() -> Self
Create a minimal configuration with no pre-registered types.
Useful when the default file/api/database types are not relevant
and you want to register only your own types via with_type.
Sourcepub fn with_type(self, type_name: &str, actions: &[&str]) -> Self
pub fn with_type(self, type_name: &str, actions: &[&str]) -> Self
Register (or replace) a supported type and its allowed actions (chainable).
The type name is also added to supported_types if not already present.
use auth_framework::server::oauth::rich_authorization_requests::RarConfig;
let config = RarConfig::empty()
.with_type("file_access", &["read", "write", "delete"])
.with_type("payment", &["initiate", "confirm"]);Sourcepub fn max_details(self, max: usize) -> Self
pub fn max_details(self, max: usize) -> Self
Set the maximum number of authorization details per request (chainable).
Sourcepub fn resource_discovery(self, enabled: bool) -> Self
pub fn resource_discovery(self, enabled: bool) -> Self
Enable or disable resource discovery (chainable).
Trait Implementations§
Source§impl<'de> Deserialize<'de> for RarConfig
impl<'de> Deserialize<'de> for RarConfig
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 RarConfig
impl RefUnwindSafe for RarConfig
impl Send for RarConfig
impl Sync for RarConfig
impl Unpin for RarConfig
impl UnsafeUnpin for RarConfig
impl UnwindSafe for RarConfig
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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