Lesson 2: Authentication Foundation
Lesson 2: Authentication Foundation
What We Are Building
This lesson delivers a production-grade Identity & Access Management (IAM) platform for InfraWatch:
User identity layer — SQLAlchemy models, bcrypt hashing, validation, Alembic-ready schema, test factories
JWT authentication — Access + refresh tokens, Redis blacklist, decorators, automatic rotation
Password security — Strength scoring, reset flow, email verification tokens, lockout, rate limiting
RBAC — Roles, permissions, admin APIs, permission cache
Auth test suite — Unit, flow, and security tests
React IAM console — Login, register, protected routes, profile, live security metrics dashboard
Core Concept: Authentication as Infrastructure Control Plane
Authentication is not a login form—it is the control plane gate for every downstream action in an infrastructure platform. When PagerDuty or Datadog restricts an action, they enforce the same sequence you build here: verify identity → check token freshness → evaluate permissions → audit the event.
The non-obvious insight: token revocation must outlive the request. Logout is not deleting a cookie—it is publishing intent to a shared store (Redis) so every API node rejects that token until expiry. Without blacklist + TTL, horizontal scaling leaks sessions.
Where This Fits in the Overall System
InfraWatch grows as a connected platform. Each module adds a layer on top of the last:
This lesson adds the security gate every other module depends on. Server management, metrics ingestion, and alert rules all assume an authenticated, authorized caller. You are not bolting auth onto a finished app—you are building the front door first.
Component Architecture
Presentation — Dark-theme React console (Datadog/PagerDuty aesthetic): login/register flows, protected dashboard, admin panel, metrics cards polling every 5 seconds.
API — Flask blueprints under /api/v1/auth and /api/v1/admin. Thin routes delegate to AuthService and JWTService.
State — PostgreSQL stores users and RBAC graph. Redis holds token blacklist, lockout counters, rate limits, and live auth telemetry counters.
File:
diagrams/component-architecture.svg
Caption: Four-layer IAM stack — React console, Flask API, PostgreSQL/Redis, Docker runtime.
Control & Data Flow
Login path: credentials → rate limit check → bcrypt verify → lockout evaluation → JWT pair issued → refresh token in httpOnly cookie → metrics incremented.
Protected path: Bearer token → blacklist lookup → JWT validation (iss/aud/exp) → permission cache → handler.
File:
diagrams/auth-flow.svg
Caption: Login and protected request flow from browser to Redis-backed session store.
Session State Machine
Users transition: Anonymous → Authenticated → Refreshing → Revoked. Failed attempts branch to Locked, then back to Anonymous after lockout TTL.
File:
diagrams/auth-state-machine.svg
Caption: Auth session states and lockout branch.
Success Criteria
Keep going with the full lesson
The rest of this lesson — plus its implementation guide, runnable scripts and source code — is included with the course or an All Access plan. Create a free account to start the free lessons in every course.
Already a member? Sign in