Security by Design
Authentication, authorization, encryption, secrets management, and architectural security patterns
Authentication: prove identity (who are you). Authorization: determine access (what can you do).
Different mechanisms: password, multi-factor auth, biometrics, certificates. Different protocols: session cookies, OAuth 2.0, OIDC, SAML, mTLS.
Common flow: user provides credentials -> authenticate -> issue token -> use token for authorization. Failures: weak password policies, session fixation, token leakage.
Best practice: never store passwords in plaintext; use bcrypt, Argon2. Session tokens should be short-lived; long-term refresh tokens stored securely.
Real-world: Google uses OIDC; Stripe uses API keys; social logins use OAuth 2.0.
Key Takeaways
Visual Diagram
User -> Credentials -> Authenticate -> Token -> Authorization checks