Skip to main content

Security

This section covers the security features and protections available in LumoAuth, along with recommended practices for deploying them. The underlying primitives are drawn from OAuth 2.0, JSON Web Tokens (JWT, signed JSON tokens), sender-constrained tokens (DPoP, which ties a token to the client's key so a stolen copy cannot be replayed), and WebAuthn/FIDO2 passkeys for phishing-resistant authentication.

If you only read one page, read Credentials and access model: it explains which credential reaches which surface (browser session, API key, OAuth token, SCIM (automatic user provisioning) token) and why API keys and Bearer tokens never turn into a browser session.


Security Features Overview​

FeatureDescription
Adaptive MFARisk-based multi-factor authentication
Brute Force ProtectionAccount lockout after failed attempts
Impossible Travel DetectionFlag logins from geographically impossible locations
Rate LimitingProtect endpoints from abuse
Token SecurityDPoP, short-lived tokens, revocation
Session SecuritySecure + HttpOnly + SameSite=Lax cookies, fixation protection, idle timeout; sessions are created only by an interactive login, never by an API key or Bearer token
Credential scopingAPI keys and OAuth tokens carry per-resource scopes; the Admin API fails closed without one. See Credentials and access model
CSRF ProtectionCross-site request forgery prevention, including on POST /logout and on the hosted OAuth login page
Password SecurityBreach detection, complexity requirements, hashing
Organization IsolationComplete data separation between organizations
Audit LoggingEvent trail across authentication, admin, and authorization actions
Signing Key RotationPeriodic cryptographic key rotation

Attack Protection​

Brute Force​

LumoAuth detects and blocks brute force attacks:

SettingDescriptionDefault
Max Failed AttemptsFailed logins before lockout5
Lockout DurationHow long the account is locked15 minutes
IP-Based BlockingAn IP with 10 failures in 30 minutes is blocked temporarilyEnabled

When an account is locked:

  • An account.locked audit entry is written and a high security alert is raised to your alert channels
  • A webhook fires if you subscribe to the matching events

The same limiter and lockout accounting (keyed by IP and by normalised e-mail) apply to the form login, the hosted OAuth login page and LDAP sign-in. The per-e-mail budget is spent atomically before the password is checked, so parallel guesses cannot race past the lockout. Re-entering the current password while signed in (change password or e-mail, delete account, forced password change) is limited to 5 attempts per 15 minutes per user, and wrong passwords there count toward the same lockout, so a stolen session cookie cannot be used to guess the password. The MFA challenge API shares the per-user challenge budget with the hosted page (429 rate_limited with Retry-After). See Rate limiting. Failures for unknown e-mails are counted too and every failure returns the same generic message, so an attacker cannot tell a wrong password from a missing account.

Credential Stuffing​

LumoAuth mitigates credential stuffing through:

  • Breached password detection (checks against known breach databases)
  • Rate limiting on login endpoints
  • Adaptive MFA that triggers on suspicious patterns
  • Anomaly detection for login patterns

Bot Protection​

  • Rate limiting per IP address
  • CAPTCHA integration for suspect requests
  • Device fingerprinting for risk assessment

Password Security​

FeatureDescription
Adaptive hashingPasswords are hashed with a strong adaptive algorithm (Argon2id or bcrypt, selected automatically)
Breach DetectionPasswords checked against known breaches
Minimum LengthConfigurable minimum password length
Complexity RulesRequire uppercase, lowercase, numbers, symbols (each a separate policy option)
Applied everywhereThe organization's policy and breached-password check apply to self-service, reset, the portal user editor (an empty password is rejected), the Admin API, SCIM and B2B invitation acceptance
Periodic resetsOptional: users must choose a new password once the password rotation interval has passed

Token Security​

FeatureDescription
Short-lived access tokensDefault 1-hour expiration
Refresh token rotationNew refresh token issued on each use
Token revocationImmediate revocation via API. Blocking, deactivating or deleting a user, Sign out everywhere, and a password change or reset also invalidate that user's already-issued access tokens at once (introspection returns active: false, userinfo and LumoAuth APIs reject them)
Sender-constrained tokens (DPoP)Bind tokens to client cryptographic keys
JWT signingRSA or EC signing with key rotation
Audience restrictionTokens scoped to specific applications
JWT access token profileJWT access tokens follow the standard claim set and application/at+jwt type

Network Security​

FeatureDescription
TLS mandatoryAll endpoints require HTTPS
HSTSStrict Transport Security headers
Secure cookiesHttpOnly, SameSite=Lax; the Secure flag is always set in production, where the session cookie is __Host-lumo_session (no Domain, Path=/), so a sibling subdomain or custom domain cannot plant or shadow it
CORSConfigurable allowed origins per application
CSPContent Security Policy headers

Organization Security​

FeatureDescription
Data isolationAll queries scoped to current organization
Separate signing keysEach organization has independent signing keys
Independent auth configMFA, password policy, social login per organization
Cross-organization protectionAuthorization checks prevent cross-organization access; the September 2026 review found no cross-organization read or write (see Security audits)
Operator fallback offLumoAuth operators cannot sign in through your hosted login page unless allow_root_admin_login has been enabled for your organization at your request

Security Configuration​

Configure security settings at (the Security group of the portal sidebar holds Sign-in settings, Adaptive security, Signing keys and Audit logs):

SettingLocation
Password policySign-in settings, sections Password standards and Auth lifecycle (/orgs/{orgId}/portal/settings/authentication)
MFA policySign-in settings, section MFA policy (/orgs/{orgId}/portal/settings/authentication)
Adaptive security (risk engine, thresholds, detection signals, network guard, trusted IP ranges)Adaptive security (/orgs/{orgId}/portal/settings/adaptive-auth)
Rate limitingFixed per deployment — no portal UI; see Rate Limiting
Signing keysSigning keys (/orgs/{orgId}/portal/signing-keys)
API keys and scopesAPI keys, under Applications & developer tools (/orgs/{orgId}/portal/settings/api-keys)
SCIM provisioning policy/orgs/{orgId}/portal/integrations/scim
security.dpop_require_nonceAdmin API PATCH /orgs/{orgId}/api/v1/admin/organization; see Organization settings
allow_root_admin_loginNot configurable by organizations; changed only by LumoAuth operators at your request; see Organization settings

The Adaptive security page with the Security engine, Risk thresholds, Adaptive MFA, Detection signals, Network guard, AI risk assessment and Trusted IP ranges sections


In This Section​

GuideDescription
Credentials and access modelWhich credential reaches which surface, scopes, and why sessions are never minted from tokens
Rate LimitingAPI rate limiting and throttling
Security Best PracticesRecommendations for secure deployment

Standards used on this page​

Plain nameStandard
OAuth 2.0 (the core sign-in and token protocol)RFC 6749
JSON Web Token (JWT)RFC 7519
Sender-constrained tokens (DPoP)RFC 9449
Passkeys (WebAuthn and FIDO2)W3C Web Authentication and FIDO Alliance CTAP
JWT access token profileRFC 9068

See the standards reference for what each one covers and how LumoAuth uses it.