#![forbid(unsafe_code)]
#![deny(missing_docs)]
#[cfg(any(test, feature = "testing"))]
#[cfg_attr(docsrs, doc(cfg(feature = "testing")))]
pub mod testing {
pub use axess_core::{MockClock, MockFactorStore, MockIdentityStore, MockRng};
pub use axess_identity::testing::*;
#[cfg(feature = "ldap")]
pub use axess_core::MockLdapProvider;
#[cfg(feature = "oauth")]
pub use axess_core::MockOAuthProvider;
#[cfg(feature = "fido2")]
pub use axess_factors::fido2::MockFido2Provider;
}
pub use axess_core::{
AuthSession, AuthState, SameSite, SessionBinding, SessionConfig, SessionConfigBuilder,
SessionData, SessionId, SessionLayer, SessionRegistry, SessionRegistryAdapter,
SessionRegistryHandle, SessionRevoker, SessionStore, UserAgentBinding,
};
#[cfg(any(test, feature = "memory"))]
pub use axess_core::{MemorySessionRegistry, MemorySessionStore};
pub mod session {
pub use axess_core::session::refresh::{RefreshTokenId, TokenFamilyId};
#[cfg(any(feature = "sqlite", feature = "postgres", feature = "valkey"))]
pub use axess_core::session::{CryptoError, SessionCrypto};
pub use axess_core::session::{RefreshToken, RefreshTokenConfig, RefreshTokenStore};
}
pub mod authn {
pub use axess_core::{
AuditQuery, AuthEvent, AuthEventBuilder, AuthEventStatus, AuthEventType, AuthMethod,
AuthnBackend, AuthnError, AuthnScope, AuthnService, DeviceId, EmailOtpConfig, EntityState,
EventQueryFilter, FactorConfig, FactorCredential, FactorKind, FactorOutcome, FactorStep,
FactorStore, FactorTemplate, FederatedProvider, Fido2Config, HotpConfig, IdentityAdmin,
IdentityAuthnLog, IdentityLookup, IdentityStore, IpPolicy, LdapBindFactorConfig,
LockoutPolicy, LoginOutcome, NoSessionRegistryError, NoopAuthnLog, OtpAlgorithm,
PasswordConfig, PasswordRules, PrepareOutcome, ProvisioningError, SessionValidator,
SignupOutcome, StatusDetail, Tenant, TenantBootstrap, TenantId, TotpConfig, User, UserId,
ZeroizedString, create_tenant, default_catalog, require_valid_session,
};
pub use axess_factors::{
HOTP_LENGTH, HotpAlgorithm, TOTP_LENGTH, TOTP_PERIOD, TotpAlgorithm, TotpVerifyParams,
build_totp_uri, generate_password_hash, generate_totp_secret, verify_hotp, verify_password,
verify_totp,
};
}
#[cfg(feature = "authz")]
pub mod authz;
#[cfg(feature = "authz")]
pub mod authorization {
pub use crate::authz::*;
}
#[cfg(feature = "authz")]
pub use authz::{
AuthzDecision, AuthzDenied, AuthzEntityProvider, AuthzError, AuthzSession, AuthzStore,
BuildRequestContext, NoContext, PolicyEvaluator, PolicyStore, StandardRequestContext,
make_action_uid, make_entity_uid,
};
#[cfg(feature = "request-id")]
pub mod request_id {
pub use axess_core::middleware::request_id::*;
}
#[cfg(feature = "trace-id")]
pub mod trace_id {
pub use axess_core::middleware::trace_id::*;
}
pub mod csrf {
pub use axess_core::middleware::csrf::*;
}
#[cfg(any(test, feature = "testing"))]
pub use axess_core::InMemoryBackend;
pub mod backends {
#[cfg(feature = "sqlite")]
pub mod sqlite {
pub use axess_core::SqliteSessionStore as SessionStore;
#[cfg(any(feature = "sqlite", feature = "postgres"))]
pub use axess_core::session::storage::session_codec::SqlStoreError as SessionStoreError;
#[cfg(feature = "device")]
pub use axess_core::SqlDeviceStoreError as DeviceStoreError;
#[cfg(feature = "device")]
pub use axess_core::SqliteDeviceStore as DeviceStore;
}
#[cfg(feature = "postgres")]
pub mod postgres {
pub use axess_core::PostgresSessionStore as SessionStore;
pub use axess_core::PostgresStoreError as SessionStoreError;
#[cfg(feature = "device")]
pub use axess_core::PostgresDeviceStore as DeviceStore;
#[cfg(feature = "device")]
pub use axess_core::SqlDeviceStoreError as DeviceStoreError;
}
#[cfg(feature = "mysql")]
pub mod mysql {
pub use axess_core::MysqlSessionStore as SessionStore;
pub use axess_core::MysqlStoreError as SessionStoreError;
#[cfg(feature = "device")]
pub use axess_core::MysqlDeviceStore as DeviceStore;
#[cfg(feature = "device")]
pub use axess_core::SqlDeviceStoreError as DeviceStoreError;
}
#[cfg(feature = "valkey")]
pub mod valkey {
pub use axess_core::ValkeySessionRegistry as SessionRegistry;
pub use axess_core::ValkeySessionStore as SessionStore;
pub use axess_core::ValkeyStoreError as SessionStoreError;
#[cfg(feature = "device")]
pub use axess_core::ValkeyDeviceStore as DeviceStore;
#[cfg(feature = "device")]
pub use axess_core::ValkeyDeviceStoreError as DeviceStoreError;
}
#[cfg(any(test, feature = "memory", feature = "testing"))]
pub mod memory {
#[cfg(any(test, feature = "testing"))]
pub use axess_core::MemoryRefreshStoreError as RefreshStoreError;
#[cfg(any(test, feature = "testing"))]
pub use axess_core::MemoryRefreshTokenStore as RefreshTokenStore;
#[cfg(any(test, feature = "memory"))]
pub use axess_core::MemorySessionRegistry as SessionRegistry;
#[cfg(any(test, feature = "memory"))]
pub use axess_core::MemorySessionStore as SessionStore;
#[cfg(feature = "device")]
pub use axess_core::MemoryDevicePiiStore as DevicePiiStore;
#[cfg(feature = "device")]
pub use axess_core::MemoryDevicePiiStoreError as DevicePiiStoreError;
#[cfg(feature = "device")]
pub use axess_core::MemoryDeviceStore as DeviceStore;
#[cfg(feature = "device")]
pub use axess_core::MemoryDeviceStoreError as DeviceStoreError;
}
}
#[cfg(feature = "device")]
pub mod device {
pub use axess_core::{
AttestationClass, CachedDeviceStore, DefaultFingerprintExtractor, Device, DeviceBinding,
DeviceEventSink, DeviceFingerprintExtractor, DeviceLifecycleService, DevicePiiCategory,
DevicePiiMapping, DevicePiiResolver, DevicePiiStore, DeviceResolver, DeviceStore,
DeviceTrustLevel, FingerprintHash, LifecycleDeviceResolver, MemoryDevicePiiStore,
MemoryDevicePiiStoreError, MemoryDeviceStore, MemoryDeviceStoreError, NoopDeviceEventSink,
NoopDeviceResolver, PiiToken, REDACTED_PLACEHOLDER, RedactedResolver, StepUpPolicy,
StepUpPolicyBuilder, SweepConfig, SweepConfigBuilder, SweepCounts, TenantPepperResolver,
cascade_revoke_by_refresh_family, cascade_revoke_devices, decide_step_up,
};
}
pub use axess_core::{Clock, SecureRng, SystemClock, SystemRng};
#[cfg(feature = "local-idp")]
pub mod local_idp {
pub use axess_core::local_idp::{
IssuanceError, LoadedKeys, LocalIdp, LocalIdpKeyStore, LocalIdpMetadata,
MemoryLocalIdpKeyStore, MemoryLocalIdpKeyStoreError,
};
pub mod discovery {
pub use axess_core::local_idp::discovery::{LocalIdpMetadata, handlers};
}
pub use axess_core::local_idp::primitives::{
IssuanceEvent, IssuanceListener, LocalIdpKeyError, LocalIdpSigningKey, MintClaims,
};
#[cfg(any(test, feature = "testing"))]
pub use axess_core::testing::local_idp::{
LocalIdpFixture, MockIssuanceListener, RecordedIssuance,
};
}
pub use axess_core::{
AuthnMetrics, CompositeHealthCheck, CompositeStatus, HealthCheck, HealthStatus, NoopMetrics,
};
pub use axess_core::{KeyExtractor, RateLimitConfig, RateLimitConfigBuilder, RateLimitLayer};
pub mod federation {
#[cfg(feature = "fido2")]
pub mod fido2 {
pub use axess_factors::fido2::{DefaultFido2Provider, Fido2Provider};
}
#[cfg(feature = "ldap")]
pub mod ldap {
pub use axess_core::{
LdapBindResult, LdapError, LdapGroupSearch, LdapProvider, LdapProviderConfig,
};
}
#[cfg(feature = "oauth")]
pub mod oauth {
pub use axess_core::{
AuthUrlResult, OAuthClaims, OAuthError, OAuthLoginOptions, OAuthProvider,
OAuthProviderConfig, ResponseMode, UserInfoClaims, spawn_jwks_refresh,
};
#[cfg(feature = "fapi")]
pub use axess_core::{DpopProof, FapiConfig, ParResponse, SenderConstraint};
}
#[cfg(feature = "oauth")]
pub mod jwt {
#[cfg(feature = "jwt-svid")]
pub use axess_factors::jwt::svid;
pub use axess_factors::jwt::{claims, validation, verifier};
}
#[cfg(feature = "mtls")]
pub mod mtls {
pub use axess_factors::mtls::{
MtlsError, MtlsResolver, PeerCertChain, SpiffeIdComponents, peek_spiffe,
};
}
pub mod pkce {
pub use axess_factors::pkce::*;
}
#[cfg(feature = "jwt")]
pub use axess_factors::federation::workload;
}
#[cfg(feature = "social")]
pub mod social {
pub use axess_factors::social::{
AuthUrl, SocialClaims, SocialError, SocialProvider, SocialProviderConfig,
};
}
#[cfg(any(
feature = "jwt",
feature = "jwt-svid",
feature = "mtls",
feature = "outbound-oauth",
feature = "outbound-mtls",
feature = "aws-sts",
feature = "gcp-wif",
feature = "azure-fic",
))]
pub mod workload {
pub use axess_core::workload::*;
}
#[cfg(any(feature = "delegated-stored", feature = "delegated-exchange"))]
pub mod delegated {
pub use axess_core::delegated::*;
}
pub use axess_factors::{
HOTP_LENGTH, HotpAlgorithm, TOTP_LENGTH, TOTP_PERIOD, TotpAlgorithm, TotpVerifyParams,
build_totp_uri, generate_password_hash, generate_totp_secret, verify_hotp, verify_password,
verify_totp,
};
#[cfg(feature = "authz")]
pub use axess_macros::require_authz;
pub use axess_macros::{require_authn, require_partial_authn};
#[cfg(feature = "ws")]
pub use axess_core::middleware::ws;