DEV Community

Cover image for Authentication Cheatsheet
Balaji Sasikumar
Balaji Sasikumar

Posted on

Authentication Cheatsheet

1. OpenID Connect (OIDC)

  • An identity layer built on top of OAuth 2.0.
  • Provides authentication and basic profile information.
  • Relies on ID tokens (JWT format).

2. Single Sign-On (SSO)

  • A user logs in once to access multiple applications.
  • Centralized authentication handled by an Identity Provider (IdP).
  • Examples: Google SSO, Microsoft Azure AD.

3. OAuth 2.0

  • An authorization framework (not for authentication).
  • Grants access to resources without sharing user credentials.
  • Uses access tokens to secure API calls.

4. Auth0

  • A cloud-based Identity as a Service (IDaaS) platform.
  • Supports OAuth 2.0, OIDC, and SAML.
  • Provides features like user management, MFA, and social login.

5. Identity Providers (IdP)

  • Services that manage user identity.
  • Examples: Keycloak, Okta, Azure AD, Ping Identity.

6. SAML (Security Assertion Markup Language)

  • XML-based protocol for exchanging authentication data.
  • Often used in enterprise SSO solutions.

7. JWT (JSON Web Token)

  • A compact, URL-safe token format.
  • Contains claims (identity, permissions) encoded in three parts: header, payload, signature.

OAuth 2.0 Flows

Flow Use Case Steps Key Token
Authorization Code User-based web app authentication (most secure). 1. Redirect user to authorize.
2. Exchange authorization code for tokens.
Access, Refresh, ID
PKCE (Proof Key for Code Exchange) Secure mobile/SPA variant of Authorization Code. 1. Generate a code verifier & challenge.
2. Send verifier in token exchange.
Access, Refresh, ID
Implicit SPAs needing quick tokens (legacy, less secure). 1. Directly return tokens in the URL fragment after user consent. Access, ID
Client Credentials Machine-to-machine communication (no user interaction). 1. Application sends client ID & secret directly. Access
Resource Owner Password Direct user credentials exchange (legacy, avoid). 1. Application sends user credentials to the authorization server to get tokens. Access, Refresh
Device Code Devices without browsers (e.g., TVs, IoT). 1. Show user a code & URL.
2. User authorizes on another device.
Access, Refresh

OIDC Flows

OIDC builds on OAuth 2.0 by adding ID tokens for authentication.

Flow Additional Steps for OIDC
Authorization Code ID token is included in the response to identify the user.
Implicit Returns both Access & ID tokens directly.
Hybrid Returns both Authorization Code & ID token in the first response.

Key Tokens

Token Purpose Format Expiry
Access Authorize API access. JWT (OAuth 2.0 spec compliant) Short-lived (minutes).
ID User authentication & profile claims (OIDC). JWT Short-lived (minutes).
Refresh Obtain new access tokens without re-authenticating. Opaque or JWT Long-lived (days/months).

Key Concepts Cheat Sheet

Concept Description
Redirect URI Callback URL where tokens/codes are sent after user authorization.
Scopes Permissions requested by the client application (e.g., profile, email).
Consent Screen UI presented to users to approve access scopes requested by the app.
PKCE Adds a layer of security to prevent interception of authorization codes.
Well-Known URL Discovery endpoint (/.well-known/openid-configuration) for fetching IdP metadata.
MFA Multi-factor authentication for added security (e.g., SMS, authenticator apps).

Quick Decision Guide

Scenario Flow to Use
Secure user authentication (web app) Authorization Code + PKCE
SPA with no backend PKCE (replaces Implicit flow)
Machine-to-machine API access Client Credentials
Devices without browsers Device Code
Avoid (legacy, insecure, or risky scenarios) Implicit, Resource Owner Password

Comparison of Access Control Models

Feature Context-Based Access Control (CBAC) Role-Based Access Control (RBAC) Fine-Grained Access Control (FGAC) Discretionary Access Control (DAC) Mandatory Access Control (MAC)
Decision Basis Real-time contextual attributes like time, location, device, and user behavior. Predefined roles and associated permissions. Highly detailed policies based on specific attributes. Owner or creator defines access permissions. Central authority enforces access based on labels.
Flexibility Highly flexible and adapts to environmental changes. Limited to static or hierarchical roles. Extremely flexible; designed for complex needs. Flexible but depends on owner decisions. Rigid and predefined, based on strict rules.
Granularity Medium to High: Uses multiple contextual factors. Medium: Permissions tied to roles, not specific attributes. Very High: Can specify access at a granular level. Low to Medium: Based on owner's definition. High: Broad classification levels control access.
Adaptability High: Evaluates access dynamically based on real-time context. Low: Static, predefined roles rarely change dynamically. High: Highly customizable for complex needs. Medium: Relies on owner's decisions. Low: Cannot adapt dynamically.
Security Very High: Mitigates risks with dynamic evaluation. Medium: Static roles can lead to privilege creep. Very High: Fine-grained policies reduce over-permissioning. Medium: Risks due to inconsistent permissions. Very High: Strict rules prevent unauthorized access.
Ease of Implementation Medium: Requires infrastructure for monitoring context. Easy: Widely supported and simple to implement. Complex: Requires detailed policy definitions. Easy: Straightforward implementation. Difficult: Strict classification and enforcement.
Scalability High: Scales well in dynamic environments. High: Scales well with role hierarchies. High: Suitable for large systems with diverse requirements. Low: Limited to individual owners. Low: Difficult to scale due to rigid structure.
Use Cases - Remote work environments. - Enterprise applications. - Multi-tenant systems. - Small teams or personal systems. - Military and government systems.
- Banking transactions. - Basic organizational hierarchies. - Healthcare and finance. - File-sharing applications. - Classified data protection.
- Zero Trust security models. - Traditional IT. - GDPR-compliant systems.

Which Model to Use?

Scenario Recommended Model
Flexible, real-time access control needed CBAC
Structured, role-based organizations RBAC
High compliance and precision requirements FGAC
Small-scale or personal systems DAC
Military or highly sensitive environments MAC

Top comments (0)