IPAuth is a piece of access-control infrastructure. The bar has to be higher than most. This page walks through the choices behind the auth model, how secrets are stored, what we log, and where the boundary lies between your data and ours.
The single biggest source of compromised accounts in the field is password reuse and credential stuffing. We side-step the entire problem by never accepting a password.
Sign-in is one of three things:
Once you enroll TOTP, every subsequent sign-in (magic link OR OAuth) is gated by a 6-digit code from your authenticator app. TOTP follows RFC 6238 (HMAC-SHA1, 30-second period, 6 digits, ±1 step window for clock skew). We support any standards-compliant app: Google Authenticator, Authy, 1Password, Bitwarden, Microsoft Authenticator, etc.
The QR code on the enrollment page is rendered client-side from a vendored, self-hosted library (no third-party QR service receives your secret).
Unlike a password (where a one-way hash is enough for verification), a TOTP secret has to be readable in order to generate codes for comparison. So we encrypt it.
Magic-link tokens, OAuth state nonces, and PKCE verifiers all use random_bytes() (libsodium CSPRNG on Linux). Never mt_rand.
We keep an append-only audit log of every state-changing action. Sign-ins, sign-outs, magic link requests, failed 2FA, pair create/update/delete, group create/delete, member add/remove, token rotation, SSO bind/unbind, bookmark emails. Each entry includes the user, the action, the target, the request IP (resolved through the CDN), and the user agent.
You can review your own audit trail in Account → Security log. We don't expose anyone else's entries to you, and we don't expose yours to anyone else.
Public traffic to ipauth.net is fronted by NOC.org's CDN with a custom WAF ruleset and rate limiting. Origin Apache only accepts traffic from CDN edge IPs. The dashboard surface (/login, /dashboard, /account) sits behind an additional protected-URL allowlist enforced at the edge.
The free public flow (the /whitelist + /serverquery endpoints) is open by design, since their entire job is to be callable from anywhere a user's browser or a customer's server happens to be.
We hold the minimum required to make the product work:
We don't store:
If you find a vulnerability, please report it to security@ipauth.net. We'll acknowledge within 48 hours and work with you to validate, fix, and credit you (if you want).
We ask the standard things: don't access data that isn't yours, don't run automated scans that could affect availability, give us a reasonable window to fix before public disclosure.
This page describes our current implementation. As IPAuth evolves we update this writeup. Last reviewed 2026-05-31.