Docs

Authentication settings reference

Every setting under Authentication: URL configuration, sessions, rate limits, multi-factor, passkeys, attack protection and custom JWT claims — what each does, defaults and plans.

Updated Oct 17, 2026Open in console

These pages decide how your app users sign in and stay signed in. They don’t affect your team’s console accounts.

URL configuration

Site URL is your app’s address; email links open it with ?token=…&type=… when no allowed redirect is given. Redirect URLs are the other addresses sign-in may return to — https://*.example.com/auth/** patterns and app schemes like myapp://callback. Mobile apps register exact redirects under Mobile apps.

Sessions

Session settings: refresh token reuse interval, single session, time-box and inactivity timeoutSession settings: refresh token reuse interval, single session, time-box and inactivity timeout
Authentication › Sessions
SettingWhat it doesTypical value
Refresh token reuse intervalA refresh token used again within this window returns the same new session (two tabs refreshing at once). After it, reuse is treated as theft and signs the user out everywhere.10 seconds
Single session per userSigning in ends the user’s other sessions; only the newest device stays signed in.Off, except banking-style apps
Time-box user sessionsSign users out this long after they signed in, however active. 0 = never.0, or 12 hours for admin apps
Inactivity timeoutSign users out when the app hasn’t refreshed the session for this long. 0 = never.0, or 30 minutes for shared computers
FreeProUltraTeamEnterprise
Session time-box, inactivity timeout and single session—✓✓✓✓

Rate limits

Auth rate limits, one row per limit with its unitAuth rate limits, one row per limit with its unit
Authentication › Rate limits

Over a limit, requests get 429 AUTH_RATE_LIMITED with Retry-After. Raise a limit only for a real reason (a classroom on one school IP); attackers rely on generous ones.

LimitCountsUnit
Emails sentConfirmations, magic links, resets and email changes for the whole project.per hour
SMS sentOne-time codes by text for the whole project.per hour
Sign-ups and sign-insPassword and OTP sign-ins and sign-ups.per 5 min, per IP
Token refreshesSession refreshes.per 5 min, per IP
Token verificationsOTP and magic-link checks.per 5 min, per IP
Anonymous sign-insNew anonymous users.per hour, per IP
Failed sign-ins per accountWrong passwords before the account is locked for 15 minutes, from any IP.per 15 min, per account
Magic linksPer address and per IP.per hour
Password resetsPer address and per IP.per hour
Email code attemptsWrong guesses at a 6-digit code before it and its link stop working.per code
SMS codes per numberCodes one phone number can be sent.per hour, per number

Multi-factor

Multi-factor settings: authenticator app, phone, maximum factorsMulti-factor settings: authenticator app, phone, maximum factors
Authentication › Multi-factor

Turn on Authenticator app (TOTP) and/or Phone (SMS code) and set Maximum factors per user. Users get backup codes when they enrol an authenticator. Turning a factor off stops new enrolments; users who have it can still use it. Require MFA for everyone under Sign in / Providers › Security. Hardware security keys as a second factor are on Enterprise.

FreeProUltraTeamEnterprise
Multi-factor authentication for app users✓✓✓✓✓
Hardware-key MFA————✓

Passkeys

Passkey settings: enable, relying party ID, display name, allowed originsPasskey settings: enable, relying party ID, display name, allowed origins
Authentication › Passkeys
SettingMeaning
Enable passkeysUsers can register a passkey after signing in, then sign in with it. A passkey sign-in counts as multi-factor.
Relying party IDYour domain, e.g. example.com. Passkeys work on it and its subdomains and can’t move to another domain later.
Display nameShown by the browser when users create a passkey.
Allowed originsEvery address your sign-in page runs on (scheme, host and port).

Attack protection

Leaked password protection and hiding whether an account existsLeaked password protection and hiding whether an account exists
Authentication › Attack protection
  • Leaked password protection rejects passwords found in known breaches (Have I Been Pwned). Only the first 5 characters of the password’s SHA-1 hash leave Sovaria (k-anonymity).
  • Hide whether an account exists — magic link, reset and OTP requests always answer the same way, so attackers can’t learn who has an account.
  • CAPTCHA on sign-up, sign-in and reset (Sign in / Providers › Security).
FreeProUltraTeamEnterprise
Leaked password protection—✓✓✓✓

Custom JWT claims

Register an HTTPS hook Sovaria calls on every token issue. The request is signed (X-Sovaria-Signature) and carries the user id, project context and base claims; the hook answers with extra keys that are merged into the token’s ctx, so your app and functions can read them from the session. Keys Sovaria owns (roles, org_id, project_id…) are ignored, and a hook slower than 50 ms is skipped so sign-in never waits — stock claims are used instead. If your plan stops including custom claims, tokens go back to stock claims.

{ "claims": { "plan_tier": "gold", "team_ids": ["t_12", "t_40"] } }
FreeProUltraTeamEnterprise
Custom JWT claims—✓✓✓✓
Something unclear or missing on this page?Tell us