OAuth 2.0 Design

    1

    Specifies an exact OAuth 2.0 profile: client types, grants incl. PKCE, scopes, tokens, refresh and revocation.

    $5

    Secure checkout via Stripe

    Money-back guarantee

    Converts to your local currency at checkout

    Security scanned

    Works with the AI Agents you already use

    Claude CodeClaude CodeCursorCursorCodex CLICodex CLIDeepSeekDeepSeekMuseMuse+22 more

    OAuth 2.0 Design

    Example session with this skill installed

    Design the OAuth 2.0 security profile for our B2B Partner Portal and Mobile App.

    • Subject: Identity Platform v3.0, clients: Partner Web SPA (React, public client) and iOS/Android Mobile Apps (public client) accessing Core Banking API (run-id: b2b-portal-auth-001).
    • Deciders: InfoSec Board (Lead: Sarah Chen) and Identity Lead (Marcus Vance).
    • Authorization Server: Keycloak 24 cluster (FIPS mode, OpenID Connect 1.0 certified).
    • Token Lifetime: Access token TTL 15 minutes (JWT signed with ES256, bound to audience https://api.bank.internal/v1); refresh token TTL 7 days.
    • Tension: Frontend partner team requested OAuth 2.0 Implicit Grant to avoid backend token exchanges; SecOps strictly forbids Implicit Grant per RFC 8252 and OAuth Security BCP, mandating Authorization Code Grant with PKCE (S256 only) and single-use Refresh Token Rotation with automatic revocation of all descendant tokens upon reuse detection.
    • Scopes: Granular read/write scopes (partner:accounts:read, partner:transfers:write, partner:statements:export); maximum refresh token lifetime 30 days absolute.

    Write the OAuth profile specification under docs/.

    • Read your context and instructions
    • Compiled the oauth 2 0

    Wrote docs/architecture/tasks/b2b-portal-auth-001/oauth-design/oauth-profile-spec.md. Complete OAuth 2.0 security profile specifying Authorization Code Grant with S256 PKCE, single-use refresh token rotation with breach detection, and ES256 JWT access tokens.


    skill: oauth-design


    OAuth 2.0 Profile Specification: B2B Partner Portal and Mobile [OAUTH-SEC-001]

    Summary

    This specification establishes the OAuth 2.0 security profile for Identity Platform v3.0 under run ID b2b-portal-auth-001.

    It governs authentication and API authorization for public clients, including the Partner Web SPA and Mobile Apps, accessing the Core Banking API.

    The profile rejects the deprecated Implicit Grant and mandates the Authorization Code Grant with mandatory Proof Key for Code Exchange (PKCE), using code_challenge_method=S256 exclusively.

    The profile specifies

    • 15-minute ES256-signed JWT access tokens
    • Strict audience binding
    • Single-use Refresh Token Rotation
    • Automated refresh-token reuse detection and revocation cascades
    • RFC 7009 token revocation

    Detailed Description

    Public clients cannot securely maintain client credentials. Historical OAuth implementations relied on the Implicit Grant, exposing access tokens in browser history, URI fragments, and HTTP Referer headers.

    This profile conforms to the OAuth 2.0 Security Best Current Practice (BCP) and RFC 8252 (OAuth for Native Apps).

    Criteria and Weights

    CriterionWhy it matters hereWeightSource of the weight
    Token Leakage PreventionPublic clients run on untrusted user devices; tokens in URI fragments risk interception.0.35Sarah Chen (SecOps Lead)
    Credential Replay DefenseStolen refresh tokens must not grant perpetual access to banking transfer scopes.0.30Marcus Vance (Identity Lead)
    Standard Spec ConformanceArchitecture must adhere to RFC 7636 (PKCE), RFC 6749, and OAuth 2.0 Security BCP.0.20Information Security Board
    Granular Resource ScopingLimit blast radius by bounding tokens to explicit audience strings and minimal scopes.0.15Banking API Policy

    Comparison

    Grant / Flow CandidateClient TypePKCE RequirementToken Delivery SeamEvaluation
    Implicit Grant (RFC 6749 §4.2)PublicNoneFront-channel URL fragmentRejected: Deprecated by OAuth Security BCP; vulnerable to token leakage in browser history.
    Authorization Code + Plain PKCEPubliccode_challenge_method=plainBack-channel POSTRejected: Does not provide the required protection against interception of the authorization code.
    Authorization Code + S256 PKCE + RotationPubliccode_challenge_method=S256Back-channel TLS POSTSelected: Uses mandatory S256 PKCE and refresh-token rotation with reuse detection.

    Result

    Authorization Code Flow with PKCE (S256) is selected.

    All public client token requests must use back-channel TLS exchanges.

    Required Mechanisms

    1. Authorization Flow and PKCE Parameters [MC-AF-01]

    Authorization Request:

    GET /realms/bank/protocol/openid-connect/auth?response_type=code&client_id=partner-web-spa&redirect_uri=https%3A%2F%2Fpartner.bank.com%2Fcallback&scope=openid%20partner%3Aaccounts%3Aread%20partner%3Atransfers%3Awrite&state=c3ab89d412e&code_challenge=E9Melhoa2OwvFrGMTJguCH5rtx64ZnVUq8_D3u5fc2k&code_challenge_method=S256 HTTP/1.1
    Host: auth.bank.internal
    

    Invariant: Authorization requests missing code_challenge_method or specifying plain are rejected with HTTP 400 invalid_request.

    2. Token Exchange and Verification [MC-TE-01]

    Token Request:

    POST /realms/bank/protocol/openid-connect/token HTTP/1.1
    Host: auth.bank.internal
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=authorization_code&client_id=partner-web-spa&code=SplxlOBeZQQYbYS6WxSbIA&redirect_uri=https%3A%2F%2Fpartner.bank.com%2Fcallback&code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk
    

    The authorization server computes BASE64URL(SHA256(code_verifier)) and compares the result byte-for-byte with the stored code_challenge.

    3. Token Profile and Scopes [MC-TP-01]

    Access Token (JWT):

    • Algorithm: ES256 (ECDSA using P-256 and SHA-256)
    • Lifetime: 900 seconds (15 minutes)

    Claims Schema:

    ClaimValue
    isshttps://auth.bank.internal/realms/bank
    audhttps://api.bank.internal/v1
    subUser ID (UUIDv4)
    client_idpartner-web-spa
    scopepartner:accounts:read partner:transfers:write
    expEpoch timestamp (Now + 900s)

    4. Refresh Token Rotation and Breach Detection [MC-RR-01]

    Refresh tokens are single-use artifacts with a 7-day sliding TTL and a 30-day absolute ceiling.

    Rotation Cycle:

    1. Client presents refresh_token_A.
    2. Authorization server invalidates refresh_token_A.
    3. Authorization server issues access_token_2 and refresh_token_B.

    Breach Detection Cascade:

    If an already-invalidated token (refresh_token_A) is presented again, the authorization server treats this as a token-reuse condition:

    1. Detect the reuse condition.
    2. Immediately revoke refresh_token_B and all descendant tokens associated with the session.
    3. Invalidate the active user session.
    4. Force complete re-authentication.

    5. Revocation Endpoint (RFC 7009) [MC-RV-01]

    Clients invoke

    POST /realms/bank/protocol/openid-connect/revoke HTTP/1.1
    Host: auth.bank.internal
    Content-Type: application/x-www-form-urlencoded
    
    token={token}&token_type_hint={token_type_hint}
    

    upon user logout.

    Invariants and Contracts

    INV-OAUTH-01 — Prohibition of Implicit Grant

    The Keycloak realm client configuration must have implicitFlowEnabled=false.

    Any authorization request with response_type=token is rejected immediately.

    INV-OAUTH-02 — Strict S256 PKCE Enforcement

    Public clients must supply code_challenge_method=S256.

    The authorization server must refuse code_challenge_method=plain or an omitted challenge method.

    INV-OAUTH-03 — Audience Restriction

    All access tokens emitted must carry

    aud=https://api.bank.internal/v1

    Core Banking API resource servers must reject access tokens lacking this exact audience claim.

    Explicit Unknowns

    • G-1: Hardware security module (HSM) key rotation schedule for ES256 signing keys in Keycloak.
    • G-2: Native mobile app deep-linking constraints across Android App Links and iOS Universal Links.

    Traceability

    ClaimClassificationSourceFreshness
    Keycloak 24 cluster in FIPS modeprovidedIntake specificationCurrent
    Access token TTL 15 min; Refresh TTL 7 daysprovidedIntake specificationCurrent
    Mandatory PKCE with S256decidedSecOps Policy & INV-OAUTH-022026-09-15
    Implicit grant rejectiondecidedSarah Chen & Marcus Vance2026-09-15
    Single-use refresh token rotationprovidedRequest constraintCurrent
    Max refresh token lifetime 30 days absoluteprovidedRequest constraintCurrent

    Verification

    No validator was supplied, so no command was run.

    Reviewer self-check against OAuth 2.0 Security BCP contracts:

    • PKCE Verification: PASS. Requires code_challenge_method=S256; plain method forbidden.
    • Grant Integrity: PASS. Authorization Code flow strictly required; implicit flow disabled.
    • Rotation Mechanics: PASS. Single-use rotation with breach revocation cascades specified.
    • Token Security: PASS. ES256 cryptographic signature and 15-minute expiration window enforced.

    Open Decisions

    DEC-OAUTH-01: Sarah Chen to determine whether a step-up MFA challenge is required when requesting scope partner:transfers:write.

    Owner: Sarah Chen.

    Next Steps

    1. Marcus Vance configures Keycloak 24 realm clients, disabling implicit flow and enforcing PKCE S256.
    2. Provide the frontend partner team with reference Authorization Code + PKCE integration library code.
    3. Configure the Core Banking API gateway JWT validator to enforce ES256 signature validation and aud verification.

    Connects securely to your tools. The creator never sees your data.

    About this skill

    OAuth 2.0 Flow Design: Full Description

    What it does

    This skill maps accepted delegated-authorization use cases and protocol authority into exact client, endpoint, grant, request, token, scope/resource, lifecycle and failure contracts. It keeps OAuth authorization separate from user authentication and resource authorization enforcement.

    Use it when

    Use when an accepted OAuth deployment needs a bounded profile for exact actors, clients, grants and protected resources.

    For example: “Our mobile app ships with a client secret in the binary because that's what the SDK example did. We also allow a wildcard redirect for our staging subdomains.”

    What you get

    • OAuth2 Architecture Spec

    Written as Markdown to <your output folder>/architecture/tasks/<run-id>/oauth-design/.

    What it will not do

    Do not use for choosing OAuth/provider, OIDC authentication, enterprise IAM/session architecture, API authorization policy, JWT/key design, social-login integration, one callback/middleware implementation or testing.

    How it works

    1. Check the question is delegated authorisation.
    2. Pick the grant from the client's real characteristics.
    3. Define the scopes as things a resource server can enforce.
    4. Fix redirect URIs and PKCE for every public client.
    5. State token lifetime, refresh behaviour and revocation.
    6. Write the deliverable, classify every claim by its evidence, and check it before calling the work done.

    What's in the package

    Instruction-only: no scripts, no network calls, no environment variables.

    • LICENSE.txt
    • SKILL.md
    • agents/openai.yaml
    • assets/output-template-task.md
    • references/domain-rules.md
    • references/operating-rules.md
    • references/output-contract.md

    Find more skills like this on the Claude Skills Marketplace, the Codex Skills Marketplace and the Gemini Skills Marketplace, or browse Claude Skills for Security.

    • Version: 1.0
    • License: proprietary, LICENSE.txt in the zip
    • Also sold in: Security Architecture Pack, Architect Complete Suite

    How to use

    1. 1

      Connect your agent to the Agensi MCP

      Copy the prompt and paste it into Claude, ChatGPT, Cursor or any agent that supports MCP. It sets up the connection for you. Manual setup

    2. 2

      Sign in to Agensi

      Your agent shows a sign-in link. Sign in and click Allow.

    3. 3

      Ask for what you need

      Your agent loads this skill and uses it on your task. It always asks before buying a skill.

    Reviews

    No reviews yet

    Be one of the first to try it. Every listed skill goes through the trust checks below.

    Security scanned

    Checked by our 8-point scan before listing

    Fresh listing

    Recently published to Agensi

    Money-back guarantee

    Doesn't do what its page promises? You get your money back.

    Trust & safety

    Security scan

    Security scan passed 1 month ago

    Permissions

    Write Files
    Read Files
    Listed1 month ago

    What's inside

    Frequently Asked Questions

    No. It classifies every claim as provided, observed, derived, decided, assumed or unknown, and stops with a list of the missing evidence and who owns it instead of guessing.

    No. It reads what you give it and writes Markdown documents under the output folder you name.

    Any agent that supports SKILL.md skills, including Claude Code, Codex CLI, Cursor and Gemini CLI. It has no scripts and makes no network calls.

    New in Security