openid-connect
Skill1 starsChanged 31 days agoMITView on GitHub
OpenID Connect (OIDC): validate ID tokens and run login, logout and discovery. Use when building or reviewing a relying party (RP), a resource server that consumes OIDC identity, or an OpenID Provider (OP): authorization code flow, state, nonce, prompt, max_age, acr_values, acr/amr/auth_time, ID token validation (iss, aud, azp, exp, signature, at_hash), public or pairwise sub, UserInfo, the claims parameter, /.well-known/openid-configuration, jwks_uri and key rotation, Dynamic Client Registration, RP-Initiated Logout, Session Management, Front-Channel and Back-Channel Logout (logout_token validation), prompt=create, unmet_authentication_requirements, response_mode=form_post, multiple response types, RP Metadata Choices, Identity Assurance (verified_claims), the Key Binding draft (bound_key, cnf) and the IPSIE SL1 profile draft. Pins OpenID Connect Core 1.0 errata set 2 and the companion OpenID Foundation specifications.
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 15
Follow the workflow below step by step: Every rule here comes from a source in Sources, cited inline as (Spec § section).
- Very specific: line 23
Sources refresh: before relying on a pin, compare it with the OpenID Foundation specifications index.
- Very specific: line 46
Register the client: Use static registration or Dynamic Client Registration, with exact redirect_uris.
- Very specific: line 52
Validate the response and the ID token: Check state, exchange the code, then run (Core § 3.1.3.7) in order, plus at_hash and c_hash where …
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
OpenID Connect
OpenID Connect is an identity layer on OAuth 2.0: the OP authenticates the End-User and returns a signed ID token that the RP validates. This skill covers RPs, resource servers that consume OIDC identity, and OPs, using Core 1.0 and the companion OpenID Foundation specifications.
Follow the workflow below step by step. Every rule here comes from a source in Sources, cited inline as (Spec § section). If a rule is not in a source, it is not in this skill.
Inputs (fill in, or ask before starting)
- Role: RP (client), resource server that consumes ID token or UserInfo claims, or OP. Several roles can apply at once.
- Revision: the pinned revisions in Sources. Ask before using a newer errata set or draft.
- Flow: authorization code, implicit or hybrid (Core § 3), chosen by client type (Core § 15.4), and the response mode (query, fragment or form_post).
- Extensions in scope: logout mechanisms, Dynamic Client Registration, Identity Assurance, Key Binding, IPSIE SL1.
- Sources refresh: before relying on a pin, compare it with the OpenID Foundation specifications index. If a revision changed, re-read the source and update
metadata.jsonand Sources.
Invariants
- Validate every ID token in the order of (Core § 3.1.3.7).
issexactly matches the issuer.audcontains the RP'sclient_id, and the token is rejected if it lists audiences the RP does not trust. The JWS signature validates with the issuer's keys. The current time is beforeexp. If anoncewas sent, the claim is present and equal. - ID tokens are always signed (Core § 2).
algis nevernoneunless the ID token comes from the token endpoint and the client registered fornone(Core § 2, Discovery § 3). - The only stable user key is
issplussub(Core § 5.7).subis case-sensitive and at most 255 ASCII characters (Core § 2). Never useemail,phone_number,preferred_usernameornameas a unique identifier (Core § 5.7). - The discovery
issueris identical to the URL it was fetched from, minus/.well-known/openid-configuration, and to the ID tokeniss. Otherwise, do not use the document (Discovery § 4.3, § 7.2). - The UserInfo
subexactly matches the ID tokensub. Otherwise, do not use the UserInfo values (Core § 5.3.2). - With
max_age, the ID token MUST containauth_time. Withprompt=none, the OP MUST NOT display any UI.nonecombined with any otherpromptvalue is an error (Core § 3.1.2.1). - Access tokens and ID tokens never travel in the query string (Multiple Response Types § 7). Response types that include
tokenorid_tokennever useresponse_mode=query(Multiple Response Types § 5). - A logout token is accepted only after the checks in (Back-Channel Logout § 2.6). It has a valid signature with a non-
nonealg, validiss,aud,iatandexp, asuborsidclaim, and the back-channel logouteventsmember. It has nononce. Any failure gets HTTP 400 (Back-Channel Logout § 2.8). - The OP redirects after logout only to a
post_logout_redirect_urithat exactly matches a registered value (RP-Initiated Logout § 3). - Implementer's Drafts and editor's drafts never override a Final specification. Apply them only at their stated posture (see Sources).
Workflow
- Fix the role, flow and response mode. With the code flow, the ID token comes from the token endpoint over TLS (Core § 3.1.3.3).
->
references/authentication-request.md✓ The response type, response mode and the endpoint that returns each token are written down. - Discover the OP. Fetch
/.well-known/openid-configurationand validate it. ->references/discovery-registration.md✓issuer,jwks_uriand the endpoints come from a validated discovery document, or from static configuration. - Register the client. Use static registration or Dynamic Client Registration, with exact
redirect_uris. ->references/discovery-registration.md✓redirect_uris,id_token_signed_response_alg,subject_typeand the token endpoint auth method are settled. - Build the authentication request. Include
state, a high-entropynonce, and, when needed,prompt,max_age,acr_valuesorclaims. ->references/authentication-request.md✓stateandnonceare bound to the browser session, and the error codes the RP handles are listed. - Validate the response and the ID token. Check
state, exchange the code, then run (Core § 3.1.3.7) in order, plusat_hashandc_hashwhere they apply. ->references/id-token-validation.md✓ Every check in the ID token validation list has code and a negative test. - Establish identity. Key the account on
issplussub. Fetch UserInfo only if it is needed, and check itssub. ->references/id-token-validation.md✓ No account lookup uses a mutable claim. - Implement logout. Choose among RP-Initiated, Front-Channel, Back-Channel and Session Management, and implement each one fully.
->
references/logout-and-sessions.md✓ The logout token validator rejects a token with anonce, withoutevents, or without bothsubandsid. - Apply extensions only when asked. Identity Assurance, Key Binding and IPSIE SL1 each have their own rules and posture.
->
references/extensions-and-drafts.md✓ Each draft in use is pinned to the revision in Sources, with its posture recorded.
Verify before done
- The ID token validator checks
iss,aud,azpwhere present, signature andalg,exp, andnonce, in the order of (Core § 3.1.3.7). - An unknown
kidtriggers one re-fetch ofjwks_uribefore the token is rejected (Core § 10.1.1). - The discovery
issuer, the fetch URL and the ID tokenissare compared exactly (Discovery § 4.3). - Accounts are keyed on
issplussub, and the UserInfosubis compared with the ID tokensub(Core § 5.3.2, § 5.7). - With
max_age,auth_timeis present and checked. With an essentialacr, the returnedacris checked (Core § 3.1.3.7, § 5.5.1.1). - No token appears in a query string, and form_post responses are not cached (Form Post § 2).
- The logout token tests cover a missing
events, a presentnonce, a missingsubandsid, a bad signature, and expiry (Back-Channel Logout § 2.6). - Post-logout redirects use exact matching against registered URIs (RP-Initiated Logout § 3).
- Every draft in use carries its pinned revision and posture.
Reference index
| File | Covers |
references/id-token-validation.md | ID token claims, the validation order, at_hash and c_hash, keys, subject types, UserInfo |
references/authentication-request.md | Request parameters, prompt, max_age, acr, error codes, response types and modes, prompt=create, third-party login |
references/discovery-registration.md | Discovery metadata and validation, Dynamic Client Registration, sector identifiers, RP Metadata Choices |
references/logout-and-sessions.md | RP-Initiated Logout, Session Management, Front-Channel Logout, Back-Channel Logout |
references/extensions-and-drafts.md | Identity Assurance, Key Binding (draft), IPSIE SL1 (draft) |
Related skills
oauth: the OAuth 2.0 layer underneath, including PKCE, access tokens and client authentication.npx skills add ScaleDockHQ/scaledock-skills --skill oauthjwt: JWS and JWT processing rules that ID tokens and logout tokens rely on.npx skills add ScaleDockHQ/scaledock-skills --skill jwtopenid: the umbrella skill that routes between the OpenID Foundation specifications.npx skills add ScaleDockHQ/scaledock-skills --skill openidopenid-federation: trust chains and automatic or explicit registration across federations.npx skills add ScaleDockHQ/scaledock-skills --skill openid-federationshared-signals: session and credential change events between OPs and RPs.npx skills add ScaleDockHQ/scaledock-skills --skill shared-signals
Sources
Status uses the publishing body's own maturity term. Checked is the date the source was last read.
- OpenID Connect Core 1.0 incorporating errata set 2: Final, 1.0 errata set 2 (15 December 2023), checked 2026-10-02.
- OpenID Connect Discovery 1.0 incorporating errata set 2: Final, 1.0 errata set 2 (15 December 2023), checked 2026-10-02.
- OpenID Connect Dynamic Client Registration 1.0 incorporating errata set 2: Final, 1.0 errata set 2 (15 December 2023), checked 2026-10-02.
- OpenID Connect RP-Initiated Logout 1.0: Final, 1.0 (12 September 2022), checked 2026-10-02.
- OpenID Connect Session Management 1.0: Final, 1.0 (12 September 2022), checked 2026-10-02.
- OpenID Connect Front-Channel Logout 1.0: Final, 1.0 (12 September 2022), checked 2026-10-02.
- OpenID Connect Back-Channel Logout 1.0 incorporating errata set 1: Final, 1.0 errata set 1 (15 December 2023), checked 2026-10-02.
- Initiating User Registration via OpenID Connect 1.0: Final, 1.0 (2 December 2022), checked 2026-10-02.
- OpenID Connect Core Error Code unmet_authentication_requirements: Final, 1.0 (June 2019), checked 2026-10-02.
- OpenID Connect Relying Party Metadata Choices 1.0: Final, 1.0 (25 March 2026), checked 2026-10-02.
- OAuth 2.0 Form Post Response Mode: Final, 1.0 (27 April 2015), checked 2026-10-02.
- OAuth 2.0 Multiple Response Type Encoding Practices: Final, 1.0 (25 February 2014), checked 2026-10-02.
- OpenID Connect for Identity Assurance 1.0 incorporating errata set 1: Final, 1.0 errata set 1 (1 July 2026), checked 2026-10-02.
- OpenID Connect Key Binding 1.0: Implementer's Draft, ID1 (document draft 03, 8 September 2026), checked 2026-10-02. Draft posture: track, pinned to ID1.
- IPSIE SL1 OpenID Connect Profile: Draft, editor's draft draft-openid-ipsie-sl1-profile-latest (29 September 2026, after -01), checked 2026-10-02. Draft posture: track, pinned to the 29 September 2026 editor's draft.
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- G1Joshi/Agent-Skills★ 15same name
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.
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
- oauthSkill
- ocsfSkill
- openapi-arazzoSkill
- openapi-overlaySkill
- openapiSkill
- openfeatureSkill
- openid4vcSkill
- 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.

