The Authorization Code flow is designed to let a client app get an access token by first getting an authorization code after the user consents. This code is then exchanged securely for the token.
The user first logs in and consents (step 1), then the authorization server sends an authorization code (step 2). The client exchanges this code for an access token (step 3), which it uses to access resources (step 4).
Using stateless tokens like JWTs allows multiple servers to validate tokens without querying a central database, enabling horizontal scaling. Load balancers distribute requests efficiently.
JWT tokens carry all info inside and can be validated without server calls, but revoking them immediately is difficult. Opaque tokens require server checks but can be revoked easily.
10 million tokens issued daily, kept for 24 hours: 10M tokens * 1 KB = 10M KB ≈ 9.77 GB ≈ 10 GB (B).