auth_framework/server/
mod.rs

1//! Server-side authentication and authorization implementations.
2//!
3//! This module provides comprehensive server-side capabilities including:
4//! - OAuth 2.0 Authorization Server (RFC 6749, RFC 8628) ✅ Working
5//! - OAuth 2.1 Authorization Framework ✅ Working
6//! - OpenID Connect Provider (OIDC 1.0) [Testing needed]
7//! - JWT Token Server
8//! - API Gateway Authentication
9//! - SAML Identity Provider
10//! - WebAuthn Relying Party Server
11
12// Hierarchical module organization
13pub mod core; // Core server functionality
14pub mod jwt; // JWT-related modules
15pub mod oauth; // OAuth 2.0/2.1 components
16pub mod oidc; // OpenID Connect components
17pub mod security;
18pub mod token_exchange; // Token exchange components // Security & compliance modules
19
20// Re-export modules from hierarchical structure for convenience
21
22// Core functionality re-exports
23pub use core::{
24    additional_modules::{
25        api_gateway, consent, device_flow_server, introspection, jwt_server, saml_idp,
26    },
27    client_registration::{
28        ClientRegistrationConfig, ClientRegistrationManager, ClientRegistrationRequest,
29        ClientRegistrationResponse, RegisteredClient,
30    },
31    client_registry::ClientRegistry,
32    federated_authentication_orchestration::{
33        AlternativeIdp, AppliedTransformation, AttributeMappingConfig, AttributeTransformation,
34        AuthenticationProtocol, CircuitBreakerConfig, CircuitBreakerState, FederationOrchestrator,
35        FederationOrchestratorConfig, FederationOrchestratorImpl, IdentityProvider, IdpCapability,
36        IdpHealthMetrics, IdpRecommendation, IdpRoutingRule, IdpSessionInfo, OrchestrationMetadata,
37        OrchestrationPattern, OrchestrationPreferences, OrchestrationRequest,
38        OrchestrationResponse, OrchestrationSessionInfo, ProtocolTranslationConfig,
39        SelectedIdpInfo, SessionFederationConfig, SessionProtocol, StringOperation, TimeConstraint,
40        TrustLevel, TrustValidationConfig,
41    },
42    metadata::MetadataProvider,
43    stepped_up_auth::{
44        AuthenticationLevel, AuthenticationMethod, LocationInfo, StepUpConfig, StepUpContext,
45        StepUpEvaluationResult, StepUpRequest, StepUpResponse, StepUpRule, StepUpStatus,
46        StepUpTrigger, SteppedUpAuthManager,
47    },
48};
49
50// OAuth 2.0/2.1 re-exports
51pub use oauth::{
52    oauth2::OAuth2Server,
53    oauth21::OAuth21Server,
54    par::PARManager,
55    rich_authorization_requests::{
56        AuthorizationDetail, RarAuthorizationDecision, RarAuthorizationProcessor,
57        RarAuthorizationRequest, RarCondition, RarConfig, RarDecisionType, RarDetailDecision,
58        RarManager, RarPermissionGrant, RarResourceAccess, RarResourceDiscoveryRequest,
59        RarResourceDiscoveryResponse, RarRestriction, RarValidationResult,
60    },
61};
62
63// OIDC re-exports
64pub use oidc::{
65    core::OidcProvider,
66    oidc_advanced_jarm::{
67        AdvancedJarmConfig, AdvancedJarmManager, AuthorizationResponse, DeliveryResult,
68        JarmDeliveryMode, JarmResponse, JarmValidationResult,
69    },
70    oidc_backchannel_logout::{
71        BackChannelLogoutConfig, BackChannelLogoutManager, BackChannelLogoutRequest,
72        BackChannelLogoutResponse, LogoutEvents, LogoutTokenClaims, NotificationResult,
73        RpBackChannelConfig,
74    },
75    oidc_enhanced_ciba::{
76        AuthenticationContext, AuthenticationMode, CibaRequestStatus, CibaTokenResponse,
77        ConsentInfo, ConsentStatus, DeviceBinding, DeviceInfo, EnhancedCibaAuthRequest,
78        EnhancedCibaAuthResponse, EnhancedCibaConfig, EnhancedCibaManager, GeoLocation,
79        UserIdentifierHint,
80    },
81    oidc_error_extensions::{
82        AuthenticationRequirements, OidcErrorCode, OidcErrorManager, OidcErrorResponse,
83    },
84    oidc_extensions::OidcExtensionsManager,
85    oidc_frontchannel_logout::{
86        FailedNotification, FrontChannelLogoutConfig, FrontChannelLogoutManager,
87        FrontChannelLogoutRequest, FrontChannelLogoutResponse, RpFrontChannelConfig,
88    },
89    oidc_response_modes::{
90        FormPostResponseMode, JarmResponseMode, MultipleResponseTypesManager, ResponseMode,
91    },
92    // Temporarily disabled: oidc_rp_initiated_logout module
93    // oidc_rp_initiated_logout::{
94    //     ClientLogoutConfig, RpInitiatedLogoutConfig, RpInitiatedLogoutManager,
95    //     RpInitiatedLogoutRequest, RpInitiatedLogoutResponse,
96    // },
97    oidc_session_management::{
98        OidcSession, SessionCheckRequest, SessionCheckResponse, SessionManager, SessionState,
99    },
100    oidc_user_registration::{
101        RegistrationData, RegistrationManager, RegistrationRequest, RegistrationResponse,
102    },
103};
104
105// JWT re-exports
106pub use jwt::{
107    jwt_access_tokens::{JwtAccessTokenBuilder, JwtAccessTokenValidator},
108    jwt_best_practices::{
109        CryptoStrength, JwtBestPracticesConfig, JwtBestPracticesValidator, SecureJwtClaims,
110        SecurityLevel,
111    },
112    jwt_introspection::{
113        BasicIntrospectionResponse, JwtIntrospectionClaims, JwtIntrospectionConfig,
114        JwtIntrospectionManager,
115    },
116    private_key_jwt::PrivateKeyJwtManager,
117};
118
119// Token Exchange re-exports
120pub use token_exchange::{
121    advanced_token_exchange::{AdvancedTokenExchangeConfig, AdvancedTokenExchangeManager},
122    core::TokenExchangeManager,
123    token_exchange_common::{
124        ExchangeRequirements, ServiceComplexityLevel, TokenExchangeCapabilities,
125        TokenExchangeFactory, TokenExchangeService, TokenExchangeUseCase, TokenValidationResult,
126        ValidationUtils,
127    },
128    token_exchange_factory::{PerformanceCharacteristics, SetupGuide, TokenExchangeManagerFactory},
129    token_introspection::{TokenIntrospectionHandler, TokenIntrospectionService},
130};
131
132// Security re-exports
133pub use security::{
134    caep_continuous_access::{
135        CaepAccessDecision, CaepConfig, CaepDeviceInfo, CaepEvaluationResult, CaepEvaluationRule,
136        CaepEvent, CaepEventHandler, CaepEventSeverity, CaepEventSource, CaepEventType,
137        CaepLocationInfo, CaepManager, CaepRuleAction, CaepRuleCondition, CaepSessionState,
138    },
139    dpop::DpopManager,
140    fapi::FapiManager,
141    mtls::MutualTlsManager,
142    x509_signing::X509CertificateManager,
143};
144
145use crate::errors::Result;
146use crate::permissions::Permission;
147use async_trait::async_trait;
148use serde::{Deserialize, Serialize};
149use std::collections::HashMap;
150use std::time::SystemTime;
151
152// Temporarily commenting out the full AuthServer struct until OAuth modules are fixed
153// This will be re-enabled once the base64 and type system issues are resolved
154
155/// Minimal server configuration for working components
156#[derive(Debug, Clone, Default)]
157pub struct WorkingServerConfig {
158    // Temporarily simplified until hierarchical imports are resolved
159}
160
161/// Client type for minimal functionality
162#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
163pub enum ClientType {
164    /// Public client (cannot securely store credentials)
165    Public,
166    /// Confidential client (can securely store credentials)
167    Confidential,
168}
169
170/// Trait for server-side authentication providers
171#[async_trait]
172pub trait AuthenticationProvider {
173    /// Provider name
174    fn name(&self) -> &str;
175
176    /// Initialize the provider
177    async fn initialize(&self) -> Result<()>;
178
179    /// Handle authentication request
180    async fn handle_auth_request(&self, request: AuthRequest) -> Result<AuthResponse>;
181
182    /// Validate credentials
183    async fn validate_credentials(&self, credentials: &str) -> Result<ValidationResult>;
184
185    /// Get provider metadata
186    async fn get_metadata(&self) -> Result<ProviderMetadata>;
187}
188
189/// Generic authentication request
190#[derive(Debug, Clone, Serialize, Deserialize)]
191pub struct AuthRequest {
192    /// Request type
193    pub request_type: String,
194
195    /// Request parameters
196    pub parameters: HashMap<String, String>,
197
198    /// Client information
199    pub client_id: Option<String>,
200
201    /// User information
202    pub user_id: Option<String>,
203
204    /// Request timestamp
205    pub timestamp: SystemTime,
206}
207
208/// Generic authentication response
209#[derive(Debug, Clone, Serialize, Deserialize)]
210pub struct AuthResponse {
211    /// Response type
212    pub response_type: String,
213
214    /// Response data
215    pub data: HashMap<String, serde_json::Value>,
216
217    /// Success indicator
218    pub success: bool,
219
220    /// Error message if any
221    pub error: Option<String>,
222
223    /// Response timestamp
224    pub timestamp: SystemTime,
225}
226
227/// Validation result
228#[derive(Debug, Clone, Serialize, Deserialize)]
229pub struct ValidationResult {
230    /// Whether the credentials are valid
231    pub valid: bool,
232
233    /// User ID if valid
234    pub user_id: Option<String>,
235
236    /// Client ID if applicable
237    pub client_id: Option<String>,
238
239    /// Scopes granted
240    pub scopes: Vec<String>,
241
242    /// Permissions granted
243    pub permissions: Vec<Permission>,
244
245    /// Token expiration time
246    pub expires_at: Option<SystemTime>,
247
248    /// Additional metadata
249    pub metadata: HashMap<String, serde_json::Value>,
250}
251
252/// Provider metadata
253#[derive(Debug, Clone, Serialize, Deserialize)]
254pub struct ProviderMetadata {
255    /// Provider name
256    pub name: String,
257
258    /// Supported endpoints
259    pub endpoints: HashMap<String, String>,
260
261    /// Supported grant types
262    pub grant_types: Vec<String>,
263
264    /// Supported response types
265    pub response_types: Vec<String>,
266
267    /// Supported scopes
268    pub scopes: Vec<String>,
269
270    /// Additional metadata
271    pub additional: HashMap<String, serde_json::Value>,
272}
273
274