Claude-skill-registry id-token-reviewer
Review test cases for ID Token validation. Covers ID Token structure, required/conditional claims, signature validation (RS256), and all validation rules per OIDC Core 1.0 Section 2 and 3.1.3.7.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/id-token-reviewer" ~/.claude/skills/majiayu000-claude-skill-registry-id-token-reviewer && rm -rf "$T"
manifest:
skills/data/id-token-reviewer/SKILL.mdsource content
ID Token Test Case Reviewer
Review test cases for ID Token generation and validation in OpenID Connect Basic OP.
Scope
- Feature: ID Token Claims and Signature
- Specifications: OIDC Core 1.0 Section 2, 3.1.3.6, 3.1.3.7
- Profile: Basic OP (Authorization Code Flow)
Review Process
- Identify which ID Token requirement the test targets
- Check against the checklist below
- Verify both valid and invalid token scenarios
- Ensure signature algorithm (RS256) is tested
- Report gaps with specific spec section references
ID Token Structure
Header.Payload.Signature
JOSE Header Requirements
| Field | Requirement | Example |
|---|---|---|
| REQUIRED. Signing algorithm | |
| RECOMMENDED. Key ID | |
| OPTIONAL. Type | |
Required Claims Checklist
| Check | Claim | Requirement | Spec Reference |
|---|---|---|---|
| [ ] | | REQUIRED. Issuer Identifier (HTTPS URL, no query/fragment) | OIDC Core 2 |
| [ ] | | REQUIRED. Subject Identifier (max 255 ASCII chars) | OIDC Core 2 |
| [ ] | | REQUIRED. Audience (contains client_id) | OIDC Core 2 |
| [ ] | | REQUIRED. Expiration time | OIDC Core 2 |
| [ ] | | REQUIRED. Issued at time | OIDC Core 2 |
Conditional Claims Checklist
| Check | Claim | Condition | Spec Reference |
|---|---|---|---|
| [ ] | | REQUIRED if nonce in auth request | OIDC Core 3.1.3.6 |
| [ ] | | REQUIRED if max_age requested or auth_time essential | OIDC Core 2 |
| [ ] | | REQUIRED if aud contains multiple values | OIDC Core 2 |
| [ ] | | OPTIONAL for code flow | OIDC Core 3.1.3.6 |
Signature Requirements
| Check | Requirement | Spec Reference |
|---|---|---|
| [ ] | ID Token MUST be signed JWT | OIDC Core 2 |
| [ ] | Support RS256 algorithm (MANDATORY) | OIDC Core 15.1 |
| [ ] | header parameter present | OIDC Core 2 |
| [ ] | header parameter present if multiple keys | OIDC Core 10.1 |
Validation Rules (OP produces valid tokens)
| Check | Validation Rule | Spec Reference |
|---|---|---|
| [ ] | exactly matches OP's Issuer Identifier | OIDC Core 3.1.3.7 |
| [ ] | contains requesting client's client_id | OIDC Core 3.1.3.7 |
| [ ] | is in the future | OIDC Core 3.1.3.7 |
| [ ] | Signature verifiable with OP's public key | OIDC Core 3.1.3.7 |
Test Case Categories
Issuer (iss
) Tests
iss- Valid:
matches configured OP issuer exactlyiss - Invalid:
adds query parametersiss - Invalid:
adds fragmentiss - Invalid:
differs by trailing slashiss - Invalid:
differs by scheme (http vs https)iss - Invalid:
is missingiss
Audience (aud
) Tests
aud- Valid:
equals client_id (string)aud - Valid:
is array containing client_idaud - Invalid:
doesn't contain client_idaud - Invalid:
is missingaud
Authorized Party (azp
) Tests
azp- Valid: Single aud, no azp required
- Valid: Multiple aud, azp equals client_id
- Warning: Multiple aud, azp missing
- Invalid: azp present but doesn't match client_id
Expiration (exp
) Tests
exp- Valid: exp is in future
- Valid: Small clock skew tolerance (typically 5 minutes)
- Invalid: exp is in past
- Invalid: exp is missing
Nonce Tests
- Valid: nonce matches request nonce
- Valid: No nonce in request, no nonce in token (code flow)
- Invalid: nonce requested but missing in token
- Invalid: nonce doesn't match request
Signature Tests
- Valid: RS256 signature verifies with OP's public key
- Valid: Retrieve key via kid from JWKS
- Invalid: Signature doesn't verify
- Invalid: Unknown kid
- Invalid: Algorithm mismatch
- Invalid: alg is none when signature required
Review Output Format
## Test Case: [Name] ### Target Feature: ID Token - [specific aspect] ### Test ID: OP-IDToken-[xxx] ### Spec Compliance: - [x] Covers required behavior per [spec section] - [ ] Missing: [specific requirement] ### Verdict: PASS / FAIL / PARTIAL ### Recommendations: [if any]
Example Valid ID Token
{ "iss": "https://server.example.com", "sub": "248289761001", "aud": "s6BhdRkqt3", "nonce": "n-0S6_WzA2Mj", "exp": 1311281970, "iat": 1311280970 }