# Session, Cookie, JWT, Token, SSO, and OAuth 20 Explained in One Diagram

Listen to this Post

When you login to a website, your identity needs to be managed properly. Here is how different solutions work:

✅ Session – The server stores your identity and gives the browser a session ID cookie. This allows the server to track login state. But cookies don’t work well across devices.

✅ Token – Your identity is encoded into a token sent to the browser. The browser sends this token on future requests for authentication. No server session storage is required. But tokens need encryption/decryption.

✅ JWT – JSON Web Tokens standardize identity tokens using digital signatures for trust. The signature is contained in the token so no server session is needed.

✅ SSO – Single Sign On uses a central authentication service. This allows a single login to work across multiple sites.

✅ OAuth2 – Allows limited access to your data on one site by another site, without giving away passwords.

✅ QR Code – Encodes a random token into a QR code for mobile login. Scanning the code logs you in without typing a password.

You Should Know:

Working with Sessions in Linux/PHP


<h1>Check active PHP sessions</h1>

ls -la /var/lib/php/sessions/

<h1>Secure session configuration in php.ini</h1>

session.cookie_secure = 1
session.cookie_httponly = 1
session.use_strict_mode = 1

JWT Commands and Tools


<h1>Install jwt-cli for debugging JWTs</h1>

npm install -g jwt-cli

<h1>Decode a JWT (without verification)</h1>

jwt decode "your.jwt.token.here"

<h1>Verify a JWT with public key</h1>

jwt verify --key public.pem "your.jwt.token.here"

OAuth 2.0 Implementation Commands


<h1>Generate RSA key pair for OAuth</h1>

openssl genrsa -out oauth-private.key 2048
openssl rsa -in oauth-private.key -pubout -out oauth-public.key

<h1>Curl example for OAuth token request</h1>

curl -X POST https://oauth-provider.com/token \
-d "grant_type=authorization_code" \
-d "code=AUTH_CODE" \
-d "redirect_uri=https://your-app.com/callback" \
-d "client_id=YOUR_CLIENT_ID" \
-d "client_secret=YOUR_CLIENT_SECRET"

SSO with Kerberos (Linux)


<h1>Install Kerberos client</h1>

sudo apt-get install krb5-user

<h1>Obtain Kerberos ticket</h1>

kinit username@REALM

<h1>List tickets</h1>

klist

<h1>Destroy tickets</h1>

kdestroy

Token-based Authentication with cURL


<h1>API request with Bearer token</h1>

curl -H "Authorization: Bearer your_access_token" \
https://api.example.com/resource

<h1>API request with JWT</h1>

curl -H "x-access-token: your.jwt.token" \
https://api.example.com/protected-route

QR Code Authentication Tools


<h1>Install qrencode for generating QR codes</h1>

sudo apt-get install qrencode

<h1>Generate QR code from text</h1>

qrencode -o qrcode.png "https://auth.example.com/token=abc123"

<h1>Read QR code from image (install zbar-tools)</h1>

zbarimg qrcode.png

What Undercode Say:

Authentication mechanisms form the bedrock of secure application development. Modern systems often combine multiple approaches – using sessions for web applications while implementing JWT for API access, with OAuth 2.0 for third-party integrations. The key is understanding when to use each method:

  • Sessions excel in traditional web apps with server-side rendering
  • JWT shines in stateless microservices architectures
  • OAuth 2.0 is ideal for delegated authorization scenarios
  • SSO provides seamless user experience across related services

Security best practices dictate:


<h1>Always use HTTPS for authentication</h1>

sudo apt-get install certbot
sudo certbot --nginx -d yourdomain.com

<h1>Set secure cookie flags in Nginx</h1>

add_header Set-Cookie "sessionid=123; Secure; HttpOnly; SameSite=Strict";

For debugging authentication flows:


<h1>Monitor HTTP headers</h1>

curl -v https://api.example.com/auth

<h1>Inspect JWT contents online (offline recommended)</h1>

jwt.io

<h1>Test session fixation vulnerabilities</h1>

hydra -l user -P wordlist.txt target.com http-get-form "/login:user=^USER^&pass=^PASS^:invalid"

Remember to regularly rotate your secrets:


<h1>Generate new secret key</h1>

openssl rand -base64 32

<h1>Rotate JWT signing keys (key rollover)</h1>

<ol>
<li>Generate new key pair</li>
<li>Update auth server to accept both old and new keys</li>
<li>Update clients to use new key</li>
<li>After all tokens signed with old key expire, remove old key

Expected Output:

Secure authentication system implementing session management, JWT validation, and OAuth 2.0 integration with proper logging and monitoring in place.

References:

Reported By: Zoranmilosevic Session – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅

Join Our Cyber World:

💬 Whatsapp | 💬 TelegramFeatured Image