oauth
Skill1 starsChanged 31 days agoMITView on GitHub
OAuth 2.1: secure resource servers, clients and ASes. Covers RFC 6749, RFC 6750 bearer tokens, the OAuth 2.1 draft, the RFC 9700 Security BCP, PKCE (RFC 7636), DPoP (RFC 9449), mTLS-bound tokens (RFC 8705), Rich Authorization Requests (RFC 9396), token exchange (RFC 8693), resource indicators (RFC 8707), AS metadata (RFC 8414), protected resource metadata (RFC 9728), the iss parameter (RFC 9207), step-up (RFC 9470), dynamic client registration (RFC 7591/7592), Client ID Metadata Documents, introspection (RFC 7662), revocation (RFC 7009) and the device grant (RFC 8628), plus transaction tokens, identity chaining and RAR remediation drafts. Use when protecting an API with access tokens, validating tokens, writing WWW-Authenticate challenges, adding PKCE, DPoP or mTLS, publishing /.well-known metadata, building an authorization server or OAuth client, delegating with token exchange or authorization_details, or reviewing an OAuth design against current best practice.
We split this skill into the rules it gives an agent
2 rules. 0 are common, 2 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 13 edited versions we read keep these.
2
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 41
Fix the role and the token model: Write down who issues tokens, who validates them, the token format, and whether tokens are bound.
- Distinctive: line 43
Validate tokens at the resource server: Read the token from the header, validate it as a JWT or through introspection, then check audience, …
“Common” is measured: kept by at least 6 in 10 of the 13 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
OAuth
OAuth 2.0 (RFC 6749) and its IETF extensions let a client obtain an access token from an authorization server (AS) and present it to a resource server (RS). OAuth 2.1, still an IETF draft, folds in the security fixes of RFC 9700. With this skill the agent builds or reviews a resource server, client or authorization server that follows those rules, with resource servers as the main focus.
Follow the workflow below step by step. Every rule here comes from a source in Sources, with the section it cites. When a rule and the pinned source disagree, the source wins; when the source has a newer revision than the pin, follow the refresh steps.
Inputs (fill in, or ask before starting)
- Role: resource server, client, authorization server, or a service that does more than one (for example an RS that exchanges tokens to call another RS).
- Token format and binding: JWT access tokens or opaque tokens with introspection; bearer, DPoP-bound or mTLS-bound.
- Revision: the pinned revisions in Sources, unless the user names another. Drafts apply only at the posture recorded there.
- Sources: when refreshing this skill or when a rule looks out of date, re-read every URL in Sources first, check the IETF datatracker for a newer draft revision or a published RFC, and update the pins.
Invariants
- The resource server validates every token fully (OAuth 2.1 draft -16 § 5.2). Not expired, issued for this resource, with the scope or authorization details the operation needs. A token meant for another resource MUST be refused (RFC 9700 § 2.3).
- Tokens never travel in the URL query. Clients MUST NOT send them there and resource servers MUST ignore them (OAuth 2.1 draft -16 § 5.1; RFC 6750 § 2.3).
- Failures answer with
WWW-Authenticate(RFC 6750 § 3).invalid_tokenwith 401,insufficient_scopewith 403, no error code when no credentials were sent (RFC 6750 § 3.1), andinsufficient_user_authenticationfor step-up (RFC 9470 § 3). - Bound tokens need their proof on every request. A DPoP-bound token is accepted only when all RFC 9449 § 4.3 checks pass and its key matches
cnf.jkt(§ 7.1); it MUST be rejected when sent asBearer(§ 7.2). An mTLS-bound token MUST match the TLS client certificate (RFC 8705 § 3). - The authorization code grant uses PKCE with S256. Public clients MUST use it; the AS MUST enforce it and MUST prevent PKCE downgrade (RFC 9700 § 2.1.1; RFC 7636 § 4.2).
- Redirect URIs match exactly, except the localhost port for native apps (RFC 9700 § 2.1).
- No implicit grant and no password grant. The implicit grant SHOULD NOT be used (RFC 9700 § 2.1.2); the password grant MUST NOT be used (RFC 9700 § 2.4).
- Clients check where responses came from. With more than one AS, a mix-up defense is REQUIRED (RFC 9700 § 2.1): compare
issto the expected issuer (RFC 9207 § 2.4). Metadata whoseissuerorresourcedoes not match is not used (RFC 8414 § 3.3; RFC 9728 § 3.3). - Refresh tokens for public clients are sender-constrained or rotated (RFC 9700 § 2.2.2).
- Introspection is authenticated and never cached past
exp(RFC 7662 § 2.1, § 4). - Delegated tokens are authorized on the subject and the current actor only (RFC 8693 § 4.1).
- Unknown authorization details are refused with
invalid_authorization_details(RFC 9396 § 5).
Workflow
- Fix the role and the token model. Write down who issues tokens, who validates them, the token format, and whether tokens are bound. ✓ Every party in the design has a role, and the RS knows whether it reads JWTs or calls introspection.
- Validate tokens at the resource server. Read the token from the header, validate it as a JWT or through introspection, then check audience, scope and authorization details for the exact operation. -> references/resource-server.md ✓ A token for another audience, an expired token and a token without the needed scope are each refused.
- Write the challenges. Return the right status, error code and
resource_metadatafor each failure. -> references/resource-server.md ✓ Each failure in the table in the reference produces its listed status andWWW-Authenticatevalue. - Publish protected resource metadata at
/.well-known/oauth-protected-resourcewithresourceequal to the resource identifier (RFC 9728 § 2, § 3). ✓ A client can go from a 401 to the AS metadata without configuration. - Add sender constraint with DPoP or mTLS where clients support it.
-> references/sender-constraint.md
✓ A replayed DPoP proof, a wrong
athand a bound token sent asBearerare each refused. - Build the client side, if in scope: discovery, authorization code with PKCE,
isscheck, resource indicators, challenge handling, device grant. -> references/clients.md ✓ Every authorization request has a fresh S256 challenge, and every response'sissis checked. - Build the authorization server side, if in scope: PKCE enforcement, codes, metadata, introspection, revocation, registration. -> references/authorization-server.md ✓ The AS metadata lists every supported feature, and the AS refuses codes reused, PKCE downgrades and unknown redirect URIs.
- Handle delegation and fine-grained access, if in scope: token exchange,
act,resource,authorization_details. -> references/delegation.md ✓ Downstream tokens are audience-restricted and narrower than the incoming token. - Apply drafts only at their posture. -> references/drafts.md ✓ Each draft feature in use names its pinned revision.
Verify before done
- The RS refuses expired tokens, wrong-audience tokens, tokens in the query string and
none-signed JWTs. - Each failure returns the status and
WWW-Authenticateerror from RFC 6750 § 3.1, RFC 9470 § 3 or RFC 9449 § 7.1, withresource_metadata. /.well-known/oauth-protected-resourcereturnsresourceequal to the resource identifier.- DPoP: all twelve RFC 9449 § 4.3 checks run,
jtireplay is limited, and a DPoP-bound token sent asBeareris rejected. - Clients send S256 PKCE, check
iss, and sendresource. - The AS enforces PKCE, matches redirect URIs exactly, returns
iss, and publishes RFC 8414 metadata. - Introspection callers authenticate, and cached results expire no later than the token.
- Every draft in use carries its pinned revision and posture.
Reference index
references/resource-server.md: reading and validating tokens, introspection, authorization details,act, challenges, RFC 9728 metadata, and a TypeScript example withjose.references/sender-constraint.md: DPoP proofs, the RFC 9449 § 4.3 checks, nonces and replay, and mTLS certificate-bound tokens.references/clients.md: discovery, authorization code with PKCE,iss, resource indicators, challenge handling, the device grant and registration.references/authorization-server.md: authorization and token endpoints, codes, RAR, metadata, introspection, revocation, device grant and dynamic registration.references/delegation.md: token exchange, delegation versus impersonation, resource indicators and Rich Authorization Requests.references/drafts.md: OAuth 2.1, Client ID Metadata Documents, identity chaining, transaction tokens and RAR remediation, each with its posture.
Related skills
jwtfor JWT access token formats and the JOSE verification checklist:npx skills add ScaleDockHQ/scaledock-skills --skill jwtopenid-connectfor ID tokens and sign-in on top of OAuth:npx skills add ScaleDockHQ/scaledock-skills --skill openid-connectgnapfor the Grant Negotiation and Authorization Protocol:npx skills add ScaleDockHQ/scaledock-skills --skill gnapmcp-authorizationfor the OAuth profile used by Model Context Protocol servers:npx skills add ScaleDockHQ/scaledock-skills --skill mcp-authorization
Sources
Status uses the publishing body's own maturity term. Checked is the date the source was last read.
- RFC 6749: The OAuth 2.0 Authorization Framework: RFC (Proposed Standard, updated by RFC 8252, RFC 8996 and RFC 9700), RFC 6749, checked 2026-10-02.
- RFC 6750: Bearer Token Usage: RFC (Proposed Standard, updated by RFC 8996 and RFC 9700), RFC 6750, checked 2026-10-02.
- The OAuth 2.1 Authorization Framework: WG draft, draft-ietf-oauth-v2-1-16 (2026-09-03), checked 2026-10-02. Draft posture: build, pinned to -16.
- RFC 9700: Best Current Practice for OAuth 2.0 Security: RFC (Best Current Practice), RFC 9700, checked 2026-10-02.
- RFC 7636: Proof Key for Code Exchange: RFC (Proposed Standard), RFC 7636, checked 2026-10-02.
- RFC 9449: Demonstrating Proof of Possession (DPoP): RFC (Proposed Standard), RFC 9449, checked 2026-10-02.
- RFC 8705: Mutual-TLS Client Authentication and Certificate-Bound Access Tokens: RFC (Proposed Standard), RFC 8705, checked 2026-10-02.
- RFC 9396: Rich Authorization Requests: RFC (Proposed Standard), RFC 9396, checked 2026-10-02.
- RFC 8693: Token Exchange: RFC (Proposed Standard), RFC 8693, checked 2026-10-02.
- RFC 8707: Resource Indicators for OAuth 2.0: RFC (Proposed Standard), RFC 8707, checked 2026-10-02.
- RFC 8414: Authorization Server Metadata: RFC (Proposed Standard), RFC 8414, checked 2026-10-02.
- RFC 9728: Protected Resource Metadata: RFC (Proposed Standard), RFC 9728, checked 2026-10-02.
- RFC 9207: Authorization Server Issuer Identification: RFC (Proposed Standard), RFC 9207, checked 2026-10-02.
- RFC 9470: Step Up Authentication Challenge Protocol: RFC (Proposed Standard), RFC 9470, checked 2026-10-02.
- RFC 7591: Dynamic Client Registration Protocol: RFC (Proposed Standard), RFC 7591, checked 2026-10-02.
- RFC 7592: Dynamic Client Registration Management Protocol: RFC (Experimental), RFC 7592, checked 2026-10-02.
- OAuth Client ID Metadata Document: WG draft, draft-ietf-oauth-client-id-metadata-document-02 (2026-07-06), checked 2026-10-02. Draft posture: build, pinned to -02.
- RFC 7662: Token Introspection: RFC (Proposed Standard), RFC 7662, checked 2026-10-02.
- RFC 7009: Token Revocation: RFC (Proposed Standard), RFC 7009, checked 2026-10-02.
- RFC 8628: Device Authorization Grant: RFC (Proposed Standard), RFC 8628, checked 2026-10-02.
- RFC 9068: JWT Profile for OAuth 2.0 Access Tokens: RFC (Proposed Standard), RFC 9068, checked 2026-10-02.
- Transaction Tokens: WG draft, draft-ietf-oauth-transaction-tokens-11 (2026-08-21; WG consensus, waiting for write-up), checked 2026-10-02. Draft posture: track, pinned to -11.
- OAuth Identity and Authorization Chaining Across Domains: RFC Editor queue, draft-ietf-oauth-identity-chaining-17 (2026-08-21; intended Proposed Standard), checked 2026-10-02. Draft posture: build, pinned to -17.
- OAuth 2.0 RAR Metadata and Error Remediation: WG draft, draft-ietf-oauth-rar-metadata-remediation-00 (2026-08-23), checked 2026-10-02. Draft posture: track, pinned to -00.
Other versions14 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 14
- vercel-labs/portless★ 13ksame name
- mcollina/skills★ 2ksame name
- ThePrimeagen/skills★ 234same name
- G1Joshi/Agent-Skills★ 15same name
- bsene/skills★ 7same name
- Nirusan/claude-config★ 7same name
- sunilgentyala/OmniRed★ 5same name
- emre-guler/websec★ 2same name
- ffsshhttiikk/opencode-agents-skills★ 2same name
- poizoncoded/skills★ 2same name
4 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use grpc, ssti and 5 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
Sorcha-PlatformSkillgrpc
Build or review gRPC services and clients in .NET. USE FOR: ASP.NET Core gRPC, protobuf contracts, unary or streaming RPC, gRPC client factory, interceptors, deadlines, cancellation, channel reuse, backend service integration. DO NOT USE FOR: broad browser-facing APIs without gRPC-Web tradeoff review, SignalR realtime hubs, plain REST APIs. INVOKES: dotnet build/test and focused service or client smoke checks when code changes.
Also in 4 projects that use this
SubhiSecSkillssti
Hunt Server-Side Template Injection (SSTI) in Jinja2, Twig, Freemarker, Velocity, Smarty, ERB, Handlebars, Mustache, and Spring (SpEL). Use when input is reflected in a way that suggests template rendering — error pages, email templates, PDF generators, dynamic content systems.
Also in 3 projects that use this
ffsshhttiikkSkillnodejs
JavaScript runtime built on Chrome's V8 JavaScript engine
Also in 3 projects that use this
ffsshhttiikkSkillgcp
Google Cloud Platform services and best practices
Also in 3 projects that use this
JetBrainsSkillvue
Vue 3 Composition API, script setup macros, reactivity system, and built-in components. Use when writing Vue SFCs, defineProps/defineEmits/defineModel, watchers, or using Transition/Teleport/Suspense/KeepAlive.
Also in 3 projects that use this
abdullah1854Skillgithub-actions
Also in 3 projects that use this
In this repository40 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- find-skillsSkill
- a2aSkill
- ag-uiSkill
- ap2Skill
- asyncapiSkill
- authzenSkill
- cedarSkill
- cloudeventsSkill
- eu-ai-actSkill
- fapiSkill
- gnapSkill
- jwtSkill
- mcp-authorizationSkill
- ocsfSkill
- openapi-arazzoSkill
- openapi-overlaySkill
- openapiSkill
- openfeatureSkill
- openid4vcSkill
- openid-connectSkill
- openid-federationSkill
- openidSkill
- opentelemetry-genaiSkill
- owasp-agenticSkill
- problem-detailsSkill
- ratelimit-headersSkill
- scaledock-agent-permissionsSkill
- scaledock-enterprise-identitySkill
- scaledock-http-apiSkill
- scaledock-mcp-serverSkill
- scaledock-repo-standardSkill
- scimSkill
- shared-signalsSkill
- spiffeSkill
- standard-schemaSkill
- typespecSkill
- web-bot-authSkill
- webmcpSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

