git clone https://github.com/ComeOnOliver/skillshub
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/TerminalSkills/skills/oauth2-oidc" ~/.claude/skills/comeonoliver-skillshub-oauth2-oidc && rm -rf "$T"
skills/TerminalSkills/skills/oauth2-oidc/SKILL.mdOAuth 2.0 / OpenID Connect
Overview
OAuth 2.0 is the industry standard for API authorization, and OpenID Connect (OIDC) extends it for user authentication. Together they provide Authorization Code + PKCE for secure token exchange, JWT-based identity tokens, refresh token rotation, and integration with identity providers (Auth0, Okta, Keycloak, Google, Azure AD) for social login and enterprise SSO.
Instructions
- When implementing authentication, use the Authorization Code + PKCE flow for all client types (SPAs, mobile, server) since it is the only secure flow; never use the deprecated Implicit or Resource Owner Password flows.
- When validating tokens on the API side, verify the JWT signature using the provider's JWKS endpoint, check
,exp
, andiss
claims, and never trust client-side token validation alone.aud - When storing tokens in web apps, use
,httpOnly
,secure
cookies; never store tokens in localStorage since it is vulnerable to XSS.sameSite=lax - When managing token lifecycle, use short-lived access tokens (5-15 minutes) with refresh token rotation where each refresh token is single-use and a new one is issued with each refresh.
- When integrating a provider, use the discovery endpoint (
) for auto-configuration rather than hardcoding endpoints./.well-known/openid-configuration - When implementing logout, revoke the refresh token, clear the session, and redirect to the provider's logout endpoint for complete session termination.
Examples
Example 1: Add social login to a Next.js app with PKCE
User request: "Implement Google and GitHub login for my Next.js app using OAuth 2.0"
Actions:
- Configure the OIDC providers with client IDs and redirect URIs
- Implement the Authorization Code + PKCE flow with state and nonce validation
- Exchange the code for tokens and validate the ID token JWT claims
- Store the session in httpOnly cookies with refresh token rotation
Output: A Next.js app with secure social login via Google and GitHub, PKCE-protected token exchange, and httpOnly cookie sessions.
Example 2: Secure a REST API with JWT validation
User request: "Add OAuth 2.0 token validation to my API endpoints"
Actions:
- Fetch the provider's JWKS from the discovery endpoint
- Create middleware that validates the access token signature, expiration, issuer, and audience
- Extract user claims and custom scopes from the validated token
- Return 401 for invalid tokens and 403 for insufficient scopes
Output: An API with JWT-based authorization that validates tokens against the provider's JWKS and enforces scope-based access control.
Guidelines
- Always use Authorization Code + PKCE since it is the only secure flow for all client types.
- Validate tokens on the API side: verify signature,
,exp
, andiss
; never trust client-side validation alone.aud - Use
,httpOnly
,secure
cookies for token storage in web apps, not localStorage.sameSite=lax - Implement refresh token rotation where each refresh token is single-use.
- Use the provider's discovery endpoint for configuration rather than hardcoding endpoints.
- Request minimum scopes needed:
for login, not all available scopes.openid email - Implement proper logout: revoke refresh token, clear session, redirect to provider's logout endpoint.