Skip to main content

Command Palette

Search for a command to run...

Introduction to Passwordless: Modern Authentication Patterns for PWAs

From passwords to passkeys: designing real authentication systems for Progressive Web Apps

Updated
4 min read
Introduction to Passwordless: Modern Authentication Patterns for PWAs
N
Senior-level Fullstack Web Developer with 10+ years experience, including 2 years of Team Lead position. Specializing in responsive design and full-stack web development across the Vue.js and .NET ecosystems. Skilled in Azure/AWS cloud infrastructure, focused on DevOps techniques such as CI/CD. Experienced in system design, especially with software architecture patterns such as microservices, BFF (backend-for-frontend). Hands-on with Agile practices in team leading, and AI-assisted coding.

Passwords were never designed to scale with the modern web — and Progressive Web Apps inherit all of their weaknesses while adding new constraints of their own.

This series explores how modern PWAs can move beyond passwords using FIDO-powered biometrics (WebAuthn), without falling into the trap of treating passwordless as a silver bullet. Starting from foundational concepts and best practices, it builds toward a real-world implementation I’ve created and improved from a POC that combines passwordless-first authentication with OpenID Connect for fallback and recovery.

The goal is not to explain APIs in isolation, but to show how authentication systems are actually designed, operated, and evolved in practice.


Series structure

Part I — Foundations

Goal: Align readers on what authentication really is before touching APIs.

Article 1 — Authentication is Not Login

  • Identity vs authentication vs authorization

  • Why passwords became a liability

  • Threat models relevant to PWAs (phishing, replay, credential stuffing)

  • Why “just add biometrics” is a misunderstanding

Article 2 — What “Passwordless” Actually Means

  • Passwordless vs MFA vs passwordless-first

  • Knowledge, possession, inherence factors (plain-language explanation)

  • Where WebAuthn fits

  • Common myths (passwordless = no backend, passwordless = device lock-in)


Part II — Standards & building blocks

Goal: Introduce the standards without drowning readers in specs.

Article 3 — WebAuthn & FIDO2, Explained Without the Spec

  • What problems WebAuthn solves

  • Public-key credentials, challenges, assertions

  • Platform vs roaming authenticators

  • User verification vs user presence

  • Why WebAuthn is phishing-resistant by design

Article 4 — OpenID Connect as the Glue

  • What OIDC actually provides (and what it doesn’t)

  • Why PWAs still need federated identity

  • Authorization Code + PKCE (conceptual, not tutorial-heavy)

  • Using IdPs for bootstrap, recovery, and portability


Part III — Architecture & best practices

Goal: Show how real systems combine these pieces.

Article 5 — Designing a Passwordless-First PWA Architecture

  • Decision points: when to attempt WebAuthn vs fallback

  • Server responsibilities (credential storage, challenges, counters)

  • Session management in PWAs

  • Secure token handling (cookies vs storage)

  • Why offline PWAs complicate auth more than expected

Article 6 — UX and Failure Are Part of the Security Model

  • Retry flows, lockouts, and graceful degradation

  • Multi-device reality

  • Lost device scenarios

  • Why fallback is not a weakness but a requirement


Part IV — My real implementation

Goal: Ground theory in a real, working flow.

Article 7 — A Real Passwordless PWA Flow (Architecture Walkthrough)

  • Walk through the full authentication flow I designed

  • Explain the decision tree (passwordless enabled vs not)

  • Role of the backend vs browser vs authenticator

  • Why each branch exists

Article 8 — Implementing WebAuthn in Practice

  • Tooling used (e.g. WebAuthn server libs, client helpers)

  • Data models (credential ID, public key, counters)

  • Common implementation pitfalls

  • What surprised me during implementation

Article 9 — Integrating OIDC (Feide) as Fallback and Recovery

  • Why Feide was chosen

  • How OIDC fits without undermining passwordless

  • Security boundaries between IdP and my system

  • Account linking considerations


Part V — Reflection & lessons learned

Goal: Help readers avoid future mistakes.

Article 10 — What Worked, What Didn’t, What I’d Change

  • Trade-offs I accepted knowingly

  • Things that looked good on paper but failed in reality

  • Operational lessons (support, monitoring, edge cases)


Optional supplemental articles

  • Why Passwordless Alone Is Not an Identity Strategy

    • Explain why fallback (OIDC, IdPs, recovery flows) is a design requirement, not a compromise

    • Connect passwordless to enrollment, recovery, device loss, and federation

    • Show architectural maturity without diving into APIs

  • How Browser UX Shapes Security More Than Cryptography

    • How browser and OS UX decisions constrain authentication design

    • Why the same WebAuthn flow feels different in Chrome, Safari, and mobile OSes

    • How retries, error messages, and permission dialogs affect security outcomes

    • Why good UX prevents insecure workarounds more effectively than stronger algorithms


☰ Series Navigation

Core Series

Optional Extras

Passwordless: Modern Authentication Patterns for PWAs

Part 13 of 13

A practical deep dive into modern authentication for Progressive Web Apps. This series starts from principles — identity, trust, and user verification — and moves toward real-world passwordless systems powered by WebAuthn / FIDO2 and OpenID Connect.

Start from the beginning

How Browser UX Shapes Security More Than Cryptography

Why browser prompts, retries, and permission dialogs influence security more than algorithms