Skip to content

P3.4: Classifier — OIDC nonce missing / unverified #80

Description

@bjcorder

Parent tracker: #62
Spec: docs/superpowers/specs/2026-05-21-edge-case-hardening-design.md
Milestone: P3
Depends on: P3.1, P2.1

Goal

Fire findings for missing OIDC nonce parameters in flow construction and missing nonce verification in ID-token verification.

Acceptance criteria

  • oidc_nonce_missing fires when an OIDC flow (scope contains openid) is constructed without a visible nonce parameter in the authorize-URL builder.
  • oidc_nonce_unverified_review fires when an ID-token verify call lacks a nonce option even though the matching flow construction set one.
  • Evidence-bound — links the flow construction artifact and the verify-call options evidence (from P2.1).

New check IDs

  • oidc_nonce_missing
  • oidc_nonce_unverified_review

Files touched

  • crates/sessionscope-classifier/src/oauth_flow.rs
  • crates/sessionscope-classifier/src/jwt.rs (verify-side correlation)

Fixture expectations

  • Negative: openid-scoped flow without nonce; openid-scoped flow with nonce but verify-call omits the option.
  • Positive: openid-scoped flow with nonce on both sides.
  • False-positive: pure OAuth flow without openid scope — no fire (the rule must scope to OIDC).

Audit-then-decide

  • oidc_nonce_missing: missing_validation_evidence, severity medium.
  • oidc_nonce_unverified_review: missing_validation_evidence, severity medium.
  • Feed into the consolidated P4.8 audit.

Doc-update checklist

  • docs/USAGE.md check catalog: two new IDs.
  • docs/COVERAGE_MATRIX.md: two rows.
  • CHANGELOG.md unreleased entry.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions