Workflow: User enters their username and password, what happens next?

 Let’s walk through the flow step by step with the logs you shared, just like I would in a senior/principal code review session.


1. You Submit Username and Password

  • You enter credentials on the login form (served by the identity-backend).

  • Identity-backend verifies your input, and (since they match the demo creds) issues a one-time auth code.

  • You are redirected back to the client (API Gateway) with ?code=...&state=... in the URL.


2. API Gateway Receives the Auth Code

  • The browser makes a GET request to /callback with the code and state.

  • API Gateway exchanges this code for a JWT by POSTing to the identity-backend /token endpoint.

  • Identity-backend responds with a valid JWT (id_token).


3. API Gateway Verifies the JWT

  • First verification:

    [verify_id_token] TokenHash=1e1ed2f44b21 Decoded claims: { ... }
    
    • Claims show the token is fresh (iat, exp), valid audience, and issuer.

  • Second verification:

    [verify_id_token] Token valid for sub=username (TokenHash=1e1ed2f44b21), checked in 2.0248s
    
    • Token is accepted, session is now authenticated for user username.


4. Successful Login is Logged

  • Gateway logs the successful login event with all context (sub, aud, code hash, IP, UA, etc.):

    [callback] Login success: sub=username, email=-, aud=browser-ui, ...
    
    • This log is a great audit trail; it ties the login to the code used, user agent, and other metadata.


5. Home Page Loads

  • The browser is redirected to / (the home page).

  • Gateway again verifies the JWT (to ensure you’re still authenticated):

    [verify_id_token] TokenHash=1e1ed2f44b21 Decoded claims: { ... }
    [verify_id_token] Token valid for sub=username ...
    
  • Home page is rendered (200 OK).


6. Static Assets and Logs

  • Browser loads your stylesheet, hits /logs.json for log display in the UI.

  • Favicon (/favicon.ico) is missing (404, not a big deal for MVP).


7. Periodic Log Requests

  • /logs.json is hit every 30 seconds or so (probably for live log updates in the UI).

  • All is working smoothly.


What’s the Big Picture?

  • Login flow is working exactly as designed:

    1. User logs in → gets code.

    2. API Gateway exchanges code for JWT.

    3. JWT is verified, session is authenticated.

    4. Home page loads, static assets and logs are fetched.

  • Security:

    • JWT is checked at each important step.

    • Logs give you complete traceability.

  • No errors or warnings (except missing favicon, which is cosmetic).


What’s Next?

  • User is authenticated until token expires (then will repeat the login flow as you saw earlier).

  • The log entries and flow are exactly what you want to see for a secure, auditable login process.


Anything else confusing in the logs, or want to trace a logout, file upload, or other flow next?

Comments

Popular posts from this blog

Feature: Audit log for one login, and identity service

Getting started - Build your data science lab environment

QA - Run #1 - Results