Auth Fundamentals
Core authentication rules every login system needs: password hashing, session revocation, verification, and the line between authentication and authorization.
0 downloads · Used in: SaaS starter context
Authentication decisions are security decisions. Get the fundamentals right before adding a single provider or UI flow.
Passwords, if you store them at all
- Never store passwords in plaintext or with a fast hash (MD5, SHA-256 alone). Use a slow, salted algorithm designed for passwords: bcrypt, scrypt, or argon2id. Argon2id is the current best default when available.
- Never roll your own hashing scheme or "improve" one with a custom pepper scheme you invented — use the library's built-in salt handling.
- Enforce a minimum length (12+ characters), not arbitrary complexity rules (mandatory symbols/numbers) — length beats complexity, and complexity rules push users toward predictable patterns.
Sessions and tokens
- Every authenticated request must be tied to a session or token that can be revoked server-side. If you use JWTs, keep them short-lived and pair them with a server-side revocation mechanism (refresh token rotation, a denylist, or a session table) — a stateless JWT alone cannot be logged out.
- Never put sensitive data (roles, permissions, PII) in a client-readable token without also re-verifying it server-side on every privileged action — a token is a claim, not a guarantee, until the server checks it against current state.
Verification before trust
- Always verify email ownership (or phone, for SMS-based flows) before treating an account as fully trusted — an unverified email should not be able to reset a password or receive account-critical notifications as if verified.
- Rate-limit login attempts per account AND per IP independently; a limit on only one of the two is trivially bypassed (distributed credential stuffing vs. a single attacker cycling accounts).
Password reset flows
- Reset tokens must be single-use, time-limited (15–60 minutes is typical), and invalidate all other outstanding reset tokens for that account when one is used.
- Never reveal via response timing or message text whether an email address has an account — "if that email exists, we sent a link," for both cases, with the same response shape and similar latency.
Multi-factor and account recovery
- If you offer MFA, always provide a documented recovery path (backup codes, admin-assisted recovery) — a user permanently locked out of their own account is a support disaster and a churn driver.
- Never let a password reset alone silently disable a user's MFA — that defeats the entire point of MFA.
Authorization is not authentication
- Authenticating who someone is says nothing about what they're allowed to do. Every privileged action needs its own authorization check server-side (role, ownership, tenant boundary) — never infer authorization from the mere presence of a valid session.
- Re-check ownership/authorization on every mutating request, even if the UI already hid the button — a hidden button is not a security control.
What builds on this
The concrete flows below — password-based login, OAuth/social login, and the specifics of keeping a session secure over its full lifetime — all assume everything above holds. Get this module right first; the concrete flows are where these rules get applied, not reinvented.
Related modules
- Payment System BasicsPayments
Foundational rules for handling money safely: server-side pricing authority, idempotent charges, integer currency math, and staying out of PCI scope.
No ratings yet - Testing StrategyTesting & Quality
A pragmatic testing pyramid and CI discipline focused on tests that actually catch real regressions, not coverage-number theater.
No ratings yet - API Documentation RulesAPI & Backend
Rules for writing API reference documentation developers can actually use: runnable examples per endpoint, realistic request/response pairs, a full error catalog, auth explained first, breaking-change changelogs, a five-minute quickstart, and generating docs from source of truth.
No ratings yet - Community Management RulesSocial & Marketing
Rules for managing a brand's social community day to day: response time and tone, handling public criticism, when to move a conversation to DM, moderation lines, rewarding contributors, and never arguing with trolls.
No ratings yet
Badge
Link back to this module from your own README.
[](https://markdowners.com/m/markdowners/auth-fundamentals)Discussions about this module
No discussions about this module yet.
Start a discussion
Comments (0)
Sign in to comment. Sign in
No comments yet. Be the first to add one.