Home/Tools/Security/OAuth/OIDC Debugger

OAuth/OIDC Debugger

Comprehensive OAuth 2.0 and OpenID Connect debugging tool. Decode JWT tokens, generate PKCE challenges, test authorization flows, validate redirect URIs, and troubleshoot common OAuth errors - all in your browser.

Loading OAuth/OIDC Debugger...
Loading interactive tool...

Need Help Implementing OAuth/OIDC?

Our security experts can help you implement secure OAuth 2.0 and OpenID Connect authentication in your applications. We provide architecture review, implementation guidance, and security audits for your authentication systems.

Debug OAuth and OIDC Flows

Test OAuth 2.0 authorization flows and decode OIDC tokens. Essential for authentication troubleshooting.

Supported Flows

  • Authorization Code (with PKCE)
  • Client Credentials
  • Implicit (legacy)
  • Device Code

Token Analysis

Decode access tokens and ID tokens. Verify signatures, check claims, validate expiration.

How JWT Decoding Works

JWT Token Structure

A JWT token consists of three parts separated by dots (.):

  1. Header - Contains metadata about the token type and signing algorithm
  2. Payload - Contains claims (statements about the user and additional data)
  3. Signature - Used to verify the token hasn't been tampered with

Decoding Process

Each part is Base64URL encoded. To decode a JWT:

  1. Split the token by the dot (.) separator
  2. Base64URL decode each part
  3. Parse the header and payload as JSON
  4. The signature remains as a Base64URL string

Important Security Note

Decoding a JWT does not verify its signature. Anyone can decode a JWT and read its contents. Always verify the signature server-side before trusting the claims in a token.

PKCE Implementation Guide

Implementing PKCE in Your Application

PKCE (Proof Key for Code Exchange) adds security to the OAuth authorization code flow. Here's how to implement it:

Step 1: Generate Code Verifier

Create a cryptographically random string (43-128 characters):

  • Use a secure random number generator
  • Encode as Base64URL
  • Store securely in your application

Step 2: Create Code Challenge

Compute the SHA-256 hash of the code verifier and encode it as Base64URL:

code_challenge = BASE64URL(SHA256(code_verifier))

Step 3: Authorization Request

Include these parameters in your authorization URL:

  • code_challenge - The computed challenge
  • code_challenge_method - Set to "S256"

Step 4: Token Exchange

When exchanging the authorization code for tokens, include:

  • code_verifier - The original verifier (NOT the challenge)

The authorization server will verify that SHA256(code_verifier) matches the code_challenge from the authorization request.

Common OAuth Error Solutions

Troubleshooting OAuth Errors

invalid_grant

Most Common Causes:

  1. Authorization code expired (typically >10 minutes)
  2. Code was already used (single-use only)
  3. Redirect URI mismatch

Solutions:

  • Ensure code exchange happens quickly
  • Never reuse authorization codes
  • Use exact redirect_uri in both requests

invalid_client

Most Common Causes:

  1. Wrong client_id or client_secret
  2. Client authentication method mismatch

Solutions:

  • Verify credentials match your provider dashboard
  • Check if using correct auth method (basic, post, jwt)

unauthorized_client

Most Common Causes:

  1. Grant type not enabled for client
  2. Redirect URI not registered

Solutions:

  • Enable required grant types in provider settings
  • Register all redirect URIs (exact match required)

access_denied

Most Common Causes:

  1. User clicked "Deny" on consent screen
  2. User lacks required permissions

Solutions:

  • Handle denial gracefully in your app
  • Request only necessary scopes
  • Provide clear explanation of why permissions are needed

OAuth Security Best Practices

Securing Your OAuth Implementation

1. Always Use PKCE

PKCE is no longer just for public clients. Use it for all OAuth flows to prevent authorization code interception attacks.

2. Short-Lived Access Tokens

Keep access tokens short-lived (5-15 minutes). Use refresh tokens for longer sessions.

3. Validate State Parameter

Always generate a unique state parameter for each authorization request and validate it on callback. This prevents CSRF attacks.

4. Exact Redirect URI Matching

Never use wildcards or regex for redirect URIs. OAuth requires exact string matching for security.

5. Verify Token Signatures

Always verify JWT signatures server-side before trusting token contents. Don't skip this step!

6. Check Token Expiration

Validate the exp claim and reject expired tokens. Don't accept tokens without expiration.

7. Secure Token Storage

  • Never store tokens in localStorage (vulnerable to XSS)
  • Use httpOnly cookies for refresh tokens
  • Store access tokens in memory when possible

8. Use HTTPS Everywhere

Never use OAuth over unencrypted HTTP in production. All endpoints must use HTTPS.

9. Implement Token Rotation

Rotate refresh tokens on each use to limit exposure if compromised.

10. Limit Scope Permissions

Request only the minimum scopes your application needs. Follow the principle of least privilege.

References & Citations

  1. Internet Engineering Task Force (IETF). (2012). RFC 6749: The OAuth 2.0 Authorization Framework. Retrieved from https://datatracker.ietf.org/doc/html/rfc6749 (accessed January 2025)
  2. Internet Engineering Task Force (IETF). (2015). RFC 7636: Proof Key for Code Exchange by OAuth Public Clients (PKCE). Retrieved from https://datatracker.ietf.org/doc/html/rfc7636 (accessed January 2025)
  3. Internet Engineering Task Force (IETF). (2015). RFC 7519: JSON Web Token (JWT). Retrieved from https://datatracker.ietf.org/doc/html/rfc7519 (accessed January 2025)
  4. Internet Engineering Task Force (IETF). (2015). RFC 7515: JSON Web Signature (JWS). Retrieved from https://datatracker.ietf.org/doc/html/rfc7515 (accessed January 2025)
  5. OpenID Foundation. (2014). OpenID Connect Core 1.0. Retrieved from https://openid.net/specs/openid-connect-core-1_0.html (accessed January 2025)
  6. Internet Engineering Task Force (IETF). (2020). RFC 8725: JSON Web Token Best Current Practices. Retrieved from https://datatracker.ietf.org/doc/html/rfc8725 (accessed January 2025)
  7. Internet Engineering Task Force (IETF). (2022). OAuth 2.0 Security Best Current Practice. Retrieved from https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics (accessed January 2025)
  8. OWASP Foundation. OWASP Authentication Cheat Sheet. Retrieved from https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html (accessed January 2025)

Note: These citations are provided for informational and educational purposes. Always verify information with the original sources and consult with qualified professionals for specific advice related to your situation.

Frequently Asked Questions

Common questions about the OAuth/OIDC Debugger

Paste your JWT token into the "JWT Decoder" tab. The tool will automatically decode the header, payload, and signature. You'll see all claims with syntax highlighting, validation status, and expiration warnings. Optionally provide a secret to verify the signature. All decoding happens in your browser - tokens are never sent to any server.

⚠️ Security Notice

This tool is provided for educational and authorized security testing purposes only. Always ensure you have proper authorization before testing any systems or networks you do not own. Unauthorized access or security testing may be illegal in your jurisdiction. All processing happens client-side in your browser - no data is sent to our servers.