Skip to main content

Authentication Types

  • Here are some major used authentication mechanism used

Password Based​

  • User provides username and password, server validate against it.

Pros​

  • easy to implement
  • no 3rd party depndency

Cons​

  • Security prone to bruteforce attacks, Password leakage
  • Need extra flow like
    • forgot password
    • reset password

Usecase​

  • Very early stage startup
  • Internal tool with limited users

Token Based​

  • Client send credentials once and server return back a token on validation
  • Next time client access protected resource with help of token
  • Mostly the token is JWT.
  • While designing focus on short lived JWT tokens with refresh token logic.
  • Avoid putting sensitive data in token, also use signed JWT tokens.

Pros​

  • stateless so easy to scale horizontally
  • Some metadata can be added in th token itself like roles, expiry etc.

Cons​

  • Overhead in request call need to pass everytime as stateless
  • Hard to revoke JWT token untill expiry (need extra logic handeling like blacklist maintain)
  • token is large so extra request size everytime

Usecase​

  • public APIs
  • Mobile apps and SPAs - as cookies hard to manage on mobile
  • Microservice env (Distributed system)

Session Based​

  • After login server create a session and stores it in Redis or DB.
  • Clients gets a session Id via cookies or from response.
  • If giving sessionId in cookies, then should set samSite only to avoid csrf.

Pros​

  • Easy to invalidate as just need to delete session entry in DB
  • Secure and remember state

Cons​

  • Doesn't scale good as has dependency on session store
  • Extra server side manage logic

Usecase​

  • Monolith app
  • traditional ssr apps

  • User enters email or phone number and receives a one-time code or login link.
  • Once verified, they are considered authenticated.

Pros​

  • No password required (better UX and security).
  • Immune to password leaks or reuse attacks.

Cons​

  • OTP/email delivery can be delayed or fail.
  • Requires integration with reliable email/SMS providers.
  • Can become annoying if asked repeatedly.

Usecase​

  • Guest login or temporary access.
  • Apps with users unfamiliar with passwords (e.g. fintech, rural apps).
  • Low-friction signup flows.

Multi-Factor Authentication (MFA / 2FA)​

  • Requires two or more of the following:
    • Something you know (password)
    • Something you have (OTP device, phone)
    • Something you are (biometrics)

Pros​

  • Significantly more secure.
  • Reduces risk of credential-stuffing or phishing.

Cons​

  • Slightly worse UX.
  • Requires user setup and recovery flows.
  • Can cause lockouts if second factor is lost.

Usecase​

  • Banking or payment systems.
  • Admin access to dashboards.
  • Enterprise SaaS with sensitive data.

OAuth 2.0 / OpenID Connect​

  • Users authenticate via trusted identity providers (Google, GitHub, Facebook, etc).
  • Your system gets limited access via access tokens.

Pros​

  • No need to manage passwords.
  • Simplifies login and signup.
  • Trusted third-party security.

Cons​

  • Protocol is complex (redirects, scopes, grants).
  • External dependency (provider must be online).
  • Some providers enforce rate limits or app review.

Usecase​

  • Social login (e.g., "Login with Google").
  • Single Sign-On (SSO) for internal company tools.
  • When you need delegated access to user data (e.g. Google Drive).

API Key Based​

  • A long, random secret key is passed in headers or query string to authenticate API requests.

Pros​

  • Simple to implement and use.
  • Good for service-to-service communication.

Cons​

  • Cannot tie directly to user identity.
  • Difficult to revoke or rotate at scale.
  • Keys can be accidentally exposed.

Usecase​

  • Internal APIs and microservices.
  • External APIs for partners or developers.
  • CLI tools or automation bots.

Certificate Based Authentication (Mutual TLS)​

  • Clients and servers authenticate each other using digital certificates (X.509).
  • Commonly used with mutual TLS.

Pros​

  • Extremely secure for machine-to-machine communication.
  • Certificates are hard to spoof.

Cons​

  • Hard to manage certificate lifecycle.
  • Complex to configure and rotate certs.

Usecase​

  • Backend microservices in Kubernetes or service mesh.
  • B2B enterprise systems.
  • Internet of Things (IoT) devices.

More Details around the Digital certificate working and Mutual TLS​

A digital certificate is like an online identity card, issued by a Certificate Authority (CA). It helps verify the identity of a server or client during encrypted communication (like HTTPS or mTLS).

📄 A digital certificate contains:​

  • Public key of the owner (server/client)
  • Identity details (e.g., domain, organization)
  • Expiry date
  • CA’s digital signature

✅ Why are they used?​

  • To secure communication over the internet (e.g., HTTPS).
  • To verify identity and avoid impersonation or man-in-the-middle attacks.

What is Mutual TLS (mTLS)?​

🔁 Regular TLS (used in HTTPS)​

  • Client verifies the server via its digital certificate.
  • Server doesn’t care who the client is — anyone can access public pages.

🔐 Mutual TLS (mTLS)​

  • Both client and server verify each other's certificates.
  • Enables two-way authentication.

This adds an extra layer of trust and is commonly used in internal and secure systems.


🔍 Analogy​

  • Digital Certificate → Your government ID.
  • TLS → You verify a website's ID (e.g., https://google.com).
  • mTLS → Both parties show ID to each other before starting a conversation.

✅ Pros of mTLS​

  • 🔐 Strong authentication (both parties verified)
  • 🔒 End-to-end encrypted channel
  • 🛡️ Resistant to impersonation and MITM attacks

❌ Cons of mTLS​

  • ⚙️ More complex setup
  • 🔁 Requires certificate rotation and management
  • ❌ Not ideal for public user authentication (too heavy)

🛠️ Use Cases for mTLS​

  • 🔄 Internal microservice communication (e.g., in Kubernetes)
  • ☁️ IoT devices authenticating with cloud services
  • 💰 Financial systems
  • 🧪 Service mesh (e.g., Istio, Linkerd)
  • 🚀 B2B secure API integrations

🔄 TLS vs Mutual TLS (mTLS)​

FeatureTLS (Standard HTTPS)Mutual TLS (mTLS)
Who presents certificate?Server onlyBoth client and server
Who verifies identity?Client onlyBoth client and server
Client identity verified?❌✅
Use casePublic websites, browsersInternal APIs, service-to-service
Setup complexityLowHigh
Security levelGoodVery Strong

🔐 Summary​

  • Digital certificates prove identity using public/private key encryption.
  • TLS ensures secure communication from client → server.
  • Mutual TLS ensures secure communication in both directions, ideal for secure internal communication.