The Copenhagen Book: general guideline on implementing auth in web applications

Overall reception of “The Copenhagen Book”

  • Many commenters find it clear, practical, and a welcome contrast to “don’t roll your own auth” warnings.
  • It’s praised for being concise, actionable, and focused on how to use crypto/auth correctly rather than deep math.
  • Some skepticism about treating it as authoritative, partly due to concerns about some design recommendations (e.g., session extension).

Passwords, magic links, and alternative auth flows

  • Strong disagreement over “don’t support passwords in 2024”:
    • One side: passwords are universal, work well with managers and TOTP/security keys, and shouldn’t be removed.
    • Other side: email magic links / OTPs are more secure in practice for typical users than reused passwords.
  • Magic links draw heavy criticism for UX: email delays, spam filters, device mismatch (phone vs desktop), and corporate email gateways “clicking” links.
  • Some argue magic links should only log you in on the device that clicked them to reduce phishing, accepting worse UX on public computers.

Passkeys, OAuth, and centralization

  • Predictions that integrated password managers or passkeys will dominate; others are wary of centralization (Apple/Google lock-in, account bans).
  • Concerns that OAuth and passkeys leak usage patterns to big providers and create brittle dependencies, so passwords should remain an option.

Security vs UX and library design

  • Repeated theme: many real security failures are UX and API-design problems, not cryptographic ones.
  • Crypto APIs are criticized for “character soup” names and unsafe defaults; praised examples favor high-level, purpose-driven functions with safe defaults.
  • Good UX examples: simple password hashing APIs, well-integrated hardware keys; bad UX: cumbersome security key flows and PGP-style complexity.

Sessions, tokens, and lifetimes

  • Debate around extending session lifetimes vs regenerating tokens:
    • Some worry about effectively “immortal” tokens.
    • Others argue rolling sessions with DB lookups and user-visible session management are a reasonable tradeoff.
  • Long-lived sessions are desired by users frustrated with frequent expirations and 2FA prompts; others note risk and provider-imposed caps.

Email handling and identifiers

  • Disagreement about treating email addresses as case-insensitive:
    • Standards say local parts are case-sensitive, but most real systems are not.
    • Common compromise: store original casing for display, but compare case-insensitively.
  • Notes that many transactional email providers only support ASCII and that exotic email formats are often painful in practice.

Other gaps and wishes

  • Requests for coverage of JWT, SAML/SSO, ID tokens, and more language examples (Python/Node).
  • Some see the “how to build” approach as preferable to ever-more-complex auth libraries.