1pub mod core; pub mod jwt; pub mod oauth; pub mod oidc; pub mod security;
18pub mod token_exchange; pub 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
50pub 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
63pub 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 oidc_session_management::{
98 OidcSession, SessionCheckRequest, SessionCheckResponse, SessionManager, SessionState,
99 },
100 oidc_user_registration::{
101 RegistrationData, RegistrationManager, RegistrationRequest, RegistrationResponse,
102 },
103};
104
105pub 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
119pub 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
132pub 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#[derive(Debug, Clone, Default)]
157pub struct WorkingServerConfig {
158 }
160
161#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
163pub enum ClientType {
164 Public,
166 Confidential,
168}
169
170#[async_trait]
172pub trait AuthenticationProvider {
173 fn name(&self) -> &str;
175
176 async fn initialize(&self) -> Result<()>;
178
179 async fn handle_auth_request(&self, request: AuthRequest) -> Result<AuthResponse>;
181
182 async fn validate_credentials(&self, credentials: &str) -> Result<ValidationResult>;
184
185 async fn get_metadata(&self) -> Result<ProviderMetadata>;
187}
188
189#[derive(Debug, Clone, Serialize, Deserialize)]
191pub struct AuthRequest {
192 pub request_type: String,
194
195 pub parameters: HashMap<String, String>,
197
198 pub client_id: Option<String>,
200
201 pub user_id: Option<String>,
203
204 pub timestamp: SystemTime,
206}
207
208#[derive(Debug, Clone, Serialize, Deserialize)]
210pub struct AuthResponse {
211 pub response_type: String,
213
214 pub data: HashMap<String, serde_json::Value>,
216
217 pub success: bool,
219
220 pub error: Option<String>,
222
223 pub timestamp: SystemTime,
225}
226
227#[derive(Debug, Clone, Serialize, Deserialize)]
229pub struct ValidationResult {
230 pub valid: bool,
232
233 pub user_id: Option<String>,
235
236 pub client_id: Option<String>,
238
239 pub scopes: Vec<String>,
241
242 pub permissions: Vec<Permission>,
244
245 pub expires_at: Option<SystemTime>,
247
248 pub metadata: HashMap<String, serde_json::Value>,
250}
251
252#[derive(Debug, Clone, Serialize, Deserialize)]
254pub struct ProviderMetadata {
255 pub name: String,
257
258 pub endpoints: HashMap<String, String>,
260
261 pub grant_types: Vec<String>,
263
264 pub response_types: Vec<String>,
266
267 pub scopes: Vec<String>,
269
270 pub additional: HashMap<String, serde_json::Value>,
272}
273
274