Skip to main content

AuthFramework

Struct AuthFramework 

Source
pub struct AuthFramework { /* private fields */ }
Expand description

The primary authentication and authorization framework for Rust applications.

AuthFramework is the central component that orchestrates all authentication and authorization operations. It provides a unified interface for multiple authentication methods, token management, session handling, and security monitoring.

§Core Capabilities

  • Multi-Method Authentication: Support for password, OAuth2, MFA, passkeys, and custom methods
  • Token Management: JWT token creation, validation, and lifecycle management
  • Session Management: Secure session handling with configurable storage backends
  • Permission System: Role-based and resource-based authorization
  • Security Monitoring: Real-time threat detection and audit logging
  • Rate Limiting: Configurable rate limiting for brute force protection

§Thread Safety

The framework is designed for concurrent use and can be safely shared across multiple threads using Arc<AuthFramework>.

§Storage Backends

Supports multiple storage backends:

  • In-memory (for development/testing)
  • Redis (for production with clustering)
  • PostgreSQL (for persistent storage)
  • Custom implementations via the AuthStorage trait

§Example

use auth_framework::{AuthFramework, AuthConfig};
use auth_framework::authentication::credentials::Credential;
use auth_framework::methods::AuthMethodEnum;

// Create framework with default configuration
let config = AuthConfig::default();
let mut auth = AuthFramework::new(config);

// Register an authentication method
auth.register_method("password", password_method);

// Authenticate a user
let result = auth.authenticate("password", credential).await?;

§Security Considerations

  • All tokens are signed with cryptographically secure keys
  • Session data is encrypted at rest when using persistent storage
  • Rate limiting prevents brute force attacks
  • Audit logging captures all security-relevant events
  • Configurable security policies for enterprise compliance

Implementations§

Source§

impl AuthFramework

Source

pub fn users(&self) -> UserOperations<'_>

Access focused user-management operations.

Source

pub fn sessions(&self) -> SessionOperations<'_>

Access focused session-management operations.

Source

pub fn tokens(&self) -> TokenOperations<'_>

Access focused token-management operations.

Source

pub fn authorization(&self) -> AuthorizationOperations<'_>

Access focused authorization operations.

Source

pub fn mfa(&self) -> MfaOperations<'_>

Access focused multi-factor authentication operations.

Source

pub fn monitoring(&self) -> MonitoringOperations<'_>

Access focused monitoring and health operations.

Source

pub fn audit(&self) -> AuditOperations<'_>

Access focused audit log operations.

Source

pub fn maintenance(&self) -> MaintenanceOperations<'_>

Access focused maintenance operations.

Source

pub async fn runtime_config(&self) -> RuntimeConfig

Read the current runtime-mutable configuration.

Source

pub async fn update_runtime_config( &self, update: RuntimeConfig, ) -> Result<RuntimeConfig>

Apply a partial or full update to the runtime-mutable configuration.

The update is applied atomically. Returns the updated configuration. Returns Err if any field value is out of range (e.g. zero token lifetime).

Source

pub fn admin(&self) -> AdminOperations<'_>

Access focused advanced administration operations (ABAC, delegation, role hierarchy).

Source

pub fn new(config: AuthConfig) -> Self

Create a new authentication framework.

This method is infallible and creates a basic framework instance. Configuration validation and component initialization is deferred to initialize(). An ephemeral random secret is used for the token manager until initialize() replaces it with the configured secret. Tokens issued before initialization will NOT be valid afterwards.

Source

pub fn new_validated(config: AuthConfig) -> Result<Self>

Create a new authentication framework with validation.

This method validates the configuration immediately and returns an error if the configuration is invalid. Use this when you want early validation.

Source

pub fn replace_storage(&mut self, storage: Arc<dyn AuthStorage>)

Replace the storage backend with a custom implementation.

This will swap the internal storage Arc so subsequent operations use the provided storage instance. Implementations that rely on a different concrete storage may need additional reconfiguration by the caller.

Source

pub fn set_distributed_store(&mut self, store: Arc<dyn DistributedSessionStore>)

Replace the distributed session store.

Call this during application startup after configuring a distributed cache (Redis, Valkey, Hazelcast, etc.) so that coordinate_distributed_sessions reports accurate cross-node session counts instead of 0.

Source

pub fn new_with_storage( config: AuthConfig, storage: Arc<dyn AuthStorage>, ) -> Self

Convenience constructor that creates a framework with a custom storage instance.

Source

pub fn register_method( &mut self, name: impl Into<String>, method: AuthMethodEnum, )

Register an authentication method.

Source

pub async fn initialize(&mut self) -> Result<()>

Initialize the authentication framework.

This method performs configuration validation, sets up secure components, and prepares the framework for use. It must be called before any other operations.

§Security Note

This method validates JWT secrets and replaces any temporary secrets with properly configured ones for production security.

Source

pub async fn authenticate( &self, method_name: &str, credential: Credential, ) -> Result<AuthResult>

Authenticate a user with the specified method.

method_name must match a previously registered authentication method (e.g. "password", "jwt", "oauth2").

§Returns
§Example
let result = auth.authenticate("password", Credential::password("alice", "S3cur3P@ss!")).await?;
match result {
    AuthResult::Success(token) => println!("Token: {}", token.access_token),
    AuthResult::MfaRequired(challenge) => println!("MFA needed: {:?}", challenge),
    AuthResult::Failure(msg) => eprintln!("Login failed: {msg}"),
}
Source

pub async fn authenticate_with_metadata( &self, method_name: &str, credential: Credential, metadata: CredentialMetadata, ) -> Result<AuthResult>

Authenticate a user with the specified method and metadata.

Source

pub async fn complete_mfa( &self, challenge: MfaChallenge, mfa_code: &str, ) -> Result<AuthToken>

Complete multi-factor authentication.

Source

pub async fn complete_mfa_by_id( &self, challenge_id: &str, mfa_code: &str, ) -> Result<AuthToken>

Complete MFA using a previously issued challenge ID.

Source

pub async fn validate_token(&self, token: &AuthToken) -> Result<bool>

Validate a token.

Source

pub async fn get_user_info(&self, token: &AuthToken) -> Result<UserInfo>

Get user information from a token.

Source

pub async fn check_permission( &self, token: &AuthToken, action: &str, resource: &str, ) -> Result<bool>

Check if a token has permission to perform an action on a resource.

This method validates the token and checks if the authenticated user has the required permission for the specified action on the given resource.

§Parameters
  • token: The authentication token to validate and check permissions for
  • action: The action being requested (e.g., “read”, “write”, “delete”)
  • resource: The resource being accessed (e.g., “documents”, “users”, “reports/123”)
§Returns

Returns true if the token is valid and the user has the required permission, false if the token is invalid or the user lacks permission.

§Example
if auth.check_permission(token, "read", "documents").await? {
    println!("User can read documents");
} else {
    println!("Access denied");
}
Source

pub async fn refresh_token(&self, token: &AuthToken) -> Result<AuthToken>

Refresh a token.

Source

pub async fn revoke_token(&self, token: &AuthToken) -> Result<()>

Revoke a token.

Source

pub async fn create_api_key( &self, user_id: &str, expires_in: Option<Duration>, ) -> Result<String>

Create a new API key for a user.

Source

pub async fn validate_api_key(&self, api_key: &str) -> Result<UserInfo>

Validate an API key and return user information.

Source

pub async fn revoke_api_key(&self, api_key: &str) -> Result<()>

Revoke an API key.

Source

pub async fn create_session( &self, user_id: &str, expires_in: Duration, ip_address: Option<String>, user_agent: Option<String>, ) -> Result<String>

Create a new session.

Source

pub async fn create_session_with_request( &self, req: SessionCreateRequest, ) -> Result<String>

Create a new session using a SessionCreateRequest for better readability.

Prefer create_session_with_request with a SessionCreateRequest for better readability when using optional fields.

§Example
let session_id = auth.create_session_with_request(
    SessionCreateRequest::new("user_123", Duration::from_secs(3600))
        .ip_address("192.168.1.1")
        .user_agent("MyApp/1.0")
).await?;
Source

pub async fn get_session(&self, session_id: &str) -> Result<Option<SessionData>>

Get session information.

Source

pub async fn delete_session(&self, session_id: &str) -> Result<()>

Delete a session.

Source

pub async fn list_user_tokens(&self, user_id: &str) -> Result<Vec<AuthToken>>

Get all tokens for a user.

Source

pub async fn cleanup_expired_data(&self) -> Result<()>

Clean up expired data.

Source

pub async fn get_stats(&self) -> Result<AuthStats>

Get authentication framework statistics.

Source

pub fn token_manager(&self) -> &TokenManager

Returns a reference to the underlying TokenManager.

Useful for advanced token operations not exposed by the TokenOperations facade.

Source

pub async fn validate_username(&self, username: &str) -> Result<bool>

Validates a username against the configured format rules.

Returns Ok(true) when the name is acceptable, or an error describing the specific rule that was violated (length, characters, etc.).

§Errors

Returns AuthError if the username is empty, too long, or contains forbidden characters per the active [SecurityConfig].

Source

pub async fn validate_display_name(&self, display_name: &str) -> Result<bool>

Validates a display name against the configured format rules.

§Errors

Returns AuthError if the display name is empty or exceeds the configured maximum length.

Source

pub async fn validate_password_strength(&self, password: &str) -> Result<bool>

Checks a password against the active security policy.

Validates minimum length, character-class requirements, and (optionally) checks against known-breached password lists.

§Errors

Returns AuthError describing which policy rule the password violates.

Source

pub async fn validate_user_input(&self, input: &str) -> Result<bool>

Validates arbitrary user input against common injection patterns.

Checks for SQL injection, XSS, and command injection markers. Returns Ok(true) when the input is safe.

Source

pub async fn create_auth_token( &self, user_id: impl Into<String>, scopes: impl Into<Scopes>, method_name: impl Into<String>, lifetime: Option<Duration>, ) -> Result<AuthToken>

Creates an authentication token directly.

This is a low-level API intended for testing, migration tools, and administrative tasks. In production, tokens should be created through authenticate instead.

§Parameters
  • user_id — the subject the token is issued to.
  • scopes — OAuth-style scopes (accepts Vec<String>, Scopes, or &[&str]).
  • method_name — the auth method to record (must be registered).
  • lifetime — override the default token TTL; None uses the framework-configured default.
§Errors
Source

pub async fn initiate_sms_challenge(&self, user_id: &str) -> Result<String>

Initiates an SMS-based MFA challenge for user_id.

Sends a one-time code via the configured SMS provider and returns a challenge ID that must be passed to verify_sms_code.

§Errors

Returns AuthError if no phone number is registered or the SMS provider fails to deliver.

Source

pub async fn verify_sms_code( &self, challenge_id: &str, code: &str, ) -> Result<bool>

Verifies an SMS challenge code previously issued by initiate_sms_challenge.

§Errors

Returns AuthError if the challenge has expired or if the code is invalid.

Source

pub async fn register_email(&self, user_id: &str, email: &str) -> Result<()>

Registers an email address for email-based MFA for user_id.

§Errors

Returns AuthError if the email format is invalid or the user does not exist.

Source

pub async fn generate_totp_secret(&self, user_id: &str) -> Result<String>

Generates a new TOTP secret and stores it for user_id.

The returned string is a Base32-encoded secret suitable for importing into authenticator apps. Pair with generate_totp_qr_code for a scan-ready URI.

§Errors

Returns AuthError if secret generation or storage fails.

Source

pub async fn generate_totp_qr_code( &self, user_id: &str, app_name: &str, secret: &str, ) -> Result<String>

Generates an otpauth:// URI suitable for rendering as a QR code.

§Parameters
  • user_id — identifies the user in the authenticator label.
  • app_name — the issuer name shown in the authenticator app.
  • secret — the Base32 TOTP secret from generate_totp_secret.
Source

pub async fn generate_totp_code(&self, secret: &str) -> Result<String>

Generates the current TOTP code for the given Base32 secret.

Primarily useful for testing; in production the user generates the code on their device.

Source

pub async fn generate_totp_code_for_window( &self, secret: &str, time_window: Option<u64>, ) -> Result<String>

Generates a TOTP code for the given secret and optional time window.

When time_window is None, the current 30-second window is used.

Source

pub async fn verify_totp_code(&self, user_id: &str, code: &str) -> Result<bool>

Verifies a TOTP code against the stored secret for user_id.

Applies a configurable clock-skew window (default: ±1 step).

§Errors

Returns AuthError if no TOTP secret is registered for the user.

Source

pub async fn check_ip_rate_limit(&self, ip: &str) -> Result<bool>

Checks whether the given IP address is within the configured rate limit.

Returns Ok(true) if the request is allowed, or an AuthError::RateLimit if the caller should be throttled.

Source

pub async fn get_security_metrics(&self) -> Result<HashMap<String, u64>>

Return security metrics for monitoring dashboards.

Keys include active_sessions, total_tokens, failed_attempts, successful_attempts, and expired_tokens.

Source

pub async fn register_phone_number( &self, user_id: &str, phone_number: &str, ) -> Result<()>

Registers a phone number for SMS-based MFA.

§Errors

Returns AuthError if the phone number format is invalid.

Source

pub async fn generate_backup_codes( &self, user_id: &str, count: usize, ) -> Result<Vec<String>>

Generate count one-time backup codes for the given user.

Codes are persisted server-side (hashed); plaintext codes are returned to the caller for display to the user.

Source

pub async fn grant_permission( &self, user_id: &str, action: &str, resource: &str, ) -> Result<()>

Grants an authorization permission to a user.

§Parameters
  • user_id — the user receiving the permission.
  • action — the action being allowed (e.g. "read", "write").
  • resource — the resource scope (e.g. "documents", "users:*").
§Errors

Returns AuthError if the user does not exist or storage fails.

Source

pub async fn initiate_email_challenge(&self, user_id: &str) -> Result<String>

Initiates an email-based MFA challenge for user_id.

Sends a one-time code to the registered email address and returns a challenge ID.

§Errors

Returns AuthError if no email is registered for the user or delivery fails.

Source

pub fn storage(&self) -> Arc<dyn AuthStorage>

Returns a cloned handle to the storage backend.

Useful when you need to pass storage to another component or run direct queries outside the framework’s managed API.

Source

pub fn config(&self) -> &AuthConfig

Returns a reference to the active framework configuration.

Source

pub async fn reset_authorization_runtime(&self)

Reset runtime authorization state back to the default roles.

Source

pub async fn register_user( &self, username: &str, email: &str, password: &str, ) -> Result<String>

Register a new user with username, email, and password.

The password is hashed with the configured algorithm (default: Argon2) before storage. Returns the generated user ID on success.

§Errors

Returns AuthError if:

  • The username or email is already taken
  • The password does not meet the configured complexity requirements
  • The storage backend is unavailable
§Example
let user_id = auth.users().register("alice", "alice@example.com", "S3cur3P@ss!").await?;
println!("Created user: {user_id}");
Source

pub async fn list_users( &self, limit: Option<usize>, offset: Option<usize>, active_only: bool, ) -> Result<Vec<UserInfo>>

👎Deprecated since 0.6.0:

use list_users_with_query(UserListQuery::new().limit(n).active_only()) instead

List users from the canonical user index with optional filtering and pagination.

This method provides paginated access to the user directory with optional filtering by active status.

§Parameters
  • limit: Maximum number of users to return (None for no limit)
  • offset: Number of users to skip for pagination (None for start from beginning)
  • active_only: If true, only return active users; if false, return all users
§Returns

Returns a vector of UserInfo structs containing user details.

§Example
// Get first 10 active users
let users = auth.list_users(Some(10), None, true).await?;
println!("Found {} active users", users.len());

// Get all users (active and inactive)
let all_users = auth.list_users(None, None, false).await?;
Source

pub async fn list_users_with_query( &self, query: UserListQuery, ) -> Result<Vec<UserInfo>>

List users using a UserListQuery for better readability.

Prefer list_users_with_query with a UserListQuery for better readability when using pagination or filtering.

§Example
let users = auth.list_users_with_query(
    UserListQuery::new()
        .limit(50)
        .active_only()
).await?;
Source

pub async fn get_user_record(&self, user_id: &str) -> Result<UserInfo>

Get user information by canonical user ID.

Source

pub async fn update_user_roles( &self, user_id: &str, roles: &[String], ) -> Result<()>

Update the roles assigned to a user.

Source

pub async fn set_user_active(&self, user_id: &str, active: bool) -> Result<()>

Set a user’s active / deactivated status.

Source

pub async fn update_user_email(&self, user_id: &str, email: &str) -> Result<()>

Update a user’s email address.

Source

pub async fn verify_user_password( &self, user_id: &str, password: &str, ) -> Result<bool>

Verify a user’s password by user_id against the stored bcrypt hash.

Source

pub async fn get_username_by_id(&self, user_id: &str) -> Result<String>

Look up a user’s username by their user_id.

Source

pub async fn username_exists(&self, username: &str) -> Result<bool>

Check if a username exists.

Source

pub async fn email_exists(&self, email: &str) -> Result<bool>

Check if an email exists.

Source

pub async fn get_user_by_username( &self, username: &str, ) -> Result<HashMap<String, Value>>

Get user data by username.

Source

pub async fn update_user_password( &self, username: &str, new_password: &str, ) -> Result<()>

Update user password.

Source

pub async fn update_user_password_by_id( &self, user_id: &str, new_password: &str, ) -> Result<()>

Update user password by canonical user ID.

Source

pub async fn delete_user(&self, username: &str) -> Result<()>

Delete a user by username.

Source

pub async fn delete_user_by_id(&self, user_id: &str) -> Result<()>

Delete a user by canonical user ID.

Source

pub async fn coordinate_distributed_sessions( &self, ) -> Result<SessionCoordinationStats>

Coordinate session state across distributed instances.

Source

pub async fn synchronize_session(&self, session_id: &str) -> Result<()>

Synchronize a specific session with remote instances.

Source

pub fn monitoring_manager(&self) -> Arc<MonitoringManager>

Returns the monitoring manager for metrics collection and health checks.

Source

pub fn security_manager(&self) -> Option<Arc<SecurityManager>>

Returns the security manager for rate limiting, DoS protection, and IP blacklisting.

Source

pub async fn get_performance_metrics(&self) -> HashMap<String, u64>

Return current performance metrics (token counts, latencies, etc.).

Source

pub async fn health_check(&self) -> Result<HashMap<String, HealthCheckResult>>

Run a health check on all sub-systems (storage, token engine, etc.).

Source

pub async fn export_prometheus_metrics(&self) -> String

Export all collected metrics in Prometheus text exposition format.

Source

pub async fn create_role(&self, role: Role) -> Result<()>

Create a new role.

Source

pub async fn list_roles(&self) -> Vec<Role>

Return all defined roles.

Source

pub async fn get_role(&self, role_name: &str) -> Result<Role>

Fetch a role definition by name.

Source

pub async fn add_role_permission( &self, role_name: &str, permission: Permission, ) -> Result<()>

Add a permission to an existing role.

Source

pub async fn assign_role(&self, user_id: &str, role_name: &str) -> Result<()>

Assign a role to a user.

Source

pub async fn remove_role(&self, user_id: &str, role_name: &str) -> Result<()>

Remove a role from a user.

Source

pub async fn set_role_inheritance( &self, child_role: &str, parent_role: &str, ) -> Result<()>

Set role inheritance.

Source

pub async fn revoke_permission( &self, user_id: &str, action: &str, resource: &str, ) -> Result<()>

Revoke permission from a user.

Source

pub async fn user_has_role( &self, user_id: &str, role_name: &str, ) -> Result<bool>

Check if user has a role.

Source

pub async fn list_user_roles(&self, user_id: &str) -> Result<Vec<String>>

List the currently assigned runtime roles for a user.

Source

pub async fn get_effective_permissions( &self, user_id: &str, ) -> Result<Vec<String>>

Get effective permissions for a user.

Source

pub async fn create_abac_policy( &self, name: &str, description: &str, ) -> Result<()>

Create ABAC policy.

Source

pub async fn map_user_attribute( &self, user_id: &str, attribute: &str, value: &str, ) -> Result<()>

Set a user attribute value for ABAC (Attribute-Based Access Control) evaluation.

User attributes are key-value pairs associated with users that can be used in dynamic permission rules. This method stores or updates an attribute value.

§Parameters
  • user_id: The ID of the user to set the attribute for
  • attribute: The name of the attribute to set
  • value: The value to assign to the attribute
§Example
// Set user attributes for policy evaluation
auth.map_user_attribute("example_user", "department", "engineering").await?;
auth.map_user_attribute("example_user", "clearance_level", "confidential").await?;
Source

pub async fn get_user_attribute( &self, user_id: &str, attribute: &str, ) -> Result<Option<String>>

Get a user attribute value for ABAC (Attribute-Based Access Control) evaluation.

User attributes are key-value pairs associated with users that can be used in dynamic permission rules. Common attributes include department, clearance level, location, etc.

§Parameters
  • user_id: The ID of the user whose attribute to retrieve
  • attribute: The name of the attribute to retrieve
§Returns

Returns Some(value) if the attribute exists, None if it doesn’t exist.

§Example
if let Some(dept) = auth.get_user_attribute("example_user", "department").await? {
    println!("User is in department: {}", dept);
}
Source

pub async fn check_dynamic_permission( &self, user_id: &str, action: &str, resource: &str, context: HashMap<String, String>, ) -> Result<bool>

Check dynamic permission with context evaluation (ABAC - Attribute-Based Access Control).

This method evaluates permissions based on user attributes, resource attributes, and environmental context rather than just role assignments. It’s more flexible than simple role-based checks but requires more complex policy rules.

§Parameters
  • user_id: The ID of the user requesting access
  • action: The action being requested (e.g., “read”, “write”, “delete”)
  • resource: The resource being accessed (e.g., “documents”, “users”, “reports/123”)
  • context: Additional context key-value pairs for policy evaluation
§Returns

Returns true if the permission is granted based on the dynamic policy evaluation.

§Example
let mut context = HashMap::new();
context.insert("time_of_day".to_string(), "business_hours".to_string());
context.insert("ip_location".to_string(), "office".to_string());

if auth.check_dynamic_permission("example_user", "read", "confidential_docs", context).await? {
    println!("Access granted based on dynamic policy");
}
Source

pub async fn check_dynamic_permission_with_context( &self, user_id: &str, action: &str, resource: &str, context: PermissionContext, ) -> Result<bool>

Check dynamic permission using a structured context (preferred).

Prefer check_dynamic_permission_with_context with a PermissionContext for better type safety and readability.

§Example
let context = PermissionContext::new()
    .with_attribute("time_of_day", "business_hours")
    .with_attribute("ip_location", "office");

if auth.check_dynamic_permission_with_context("example_user", "read", "confidential_docs", context).await? {
    println!("Access granted based on dynamic policy");
}
Source

pub async fn create_resource(&self, resource: &str) -> Result<()>

Create resource for permission management.

Source

pub async fn delegate_permission_with_request( &self, req: DelegationRequest, ) -> Result<()>

Delegate permission from one user to another using a DelegationRequest.

This is the preferred method for delegation as it avoids passing multiple parameters and makes the call site self-documenting.

§Example
let req = DelegationRequest::new("admin_1", "user_2", "write", "reports")
    .duration(Duration::from_secs(3600));
auth.delegate_permission_with_request(req).await?;
Source

pub async fn delegate_permission( &self, delegator_id: &str, delegatee_id: &str, action: &str, resource: &str, duration: Duration, ) -> Result<()>

Delegate permission from one user to another.

Prefer delegate_permission_with_request with a DelegationRequest for better readability when delegating permissions.

Source

pub async fn get_active_delegations(&self, user_id: &str) -> Result<Vec<String>>

Get active delegations for a user.

Source

pub async fn get_permission_audit_logs( &self, user_id: Option<&str>, action: Option<&str>, resource: Option<&str>, limit: Option<usize>, ) -> Result<Vec<String>>

Get permission audit logs with filtering.

Source

pub async fn get_permission_audit_logs_with_query( &self, query: AuditLogQuery, ) -> Result<Vec<String>>

Get permission audit logs using an AuditLogQuery for better readability.

Prefer get_permission_audit_logs_with_query with an AuditLogQuery for better readability when using multiple filters.

§Example
let logs = auth.get_permission_audit_logs_with_query(
    AuditLogQuery::new()
        .user("user_123")
        .action("read")
        .limit(50)
).await?;
Source

pub async fn get_permission_metrics( &self, ) -> Result<HashMap<String, u64>, AuthError>

Get permission metrics for monitoring.

Source

pub async fn get_security_audit_stats(&self) -> Result<SecurityAuditStats>

Collect comprehensive security audit statistics.

Source

pub async fn get_user_profile(&self, user_id: &str) -> Result<ProviderProfile>

Get user profile information

Source§

impl AuthFramework

Source

pub fn builder() -> AuthBuilder

Create a new builder for the authentication framework

Source

pub fn quick_start() -> QuickStartBuilder

Quick start builder for common setups

Source

pub fn for_use_case(use_case: UseCasePreset) -> AuthBuilder

Create a builder for a specific use case

Source

pub fn preset(preset: SecurityPreset) -> AuthBuilder

Create an authentication framework with preset configuration

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<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

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

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. 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

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