Skip to content

http: classify missing token, invalid token, and insufficient scope distinctly #2213

@davidahmann

Description

@davidahmann

Problem

Authentication and authorization failures currently collapse into generic HTTP errors even though missing credentials, invalid/expired credentials, and insufficient scopes require different remediation. That weakens machine-readable diagnostics for hosts and operators.

Why now

This server sits directly on GitHub token-policy boundaries. Clients and wrappers need explicit failure classification to decide whether to prompt for auth, refresh a token, or request additional scopes.

Expected behavior

Missing token, invalid/expired token, and insufficient scope paths should each expose a distinct machine-readable error code while preserving the existing auth challenge semantics.

Claim-to-codepath map

  • pkg/http/middleware/token.go
  • pkg/http/middleware/pat_scope.go
  • pkg/http/middleware/scope_challenge.go
  • pkg/errors/error.go
  • docs/error-handling.md

Evidence packet

  • Commit under test: fa87e4fc9e4cd1f514cf4c236b9135987a328512
  • Runtime: Go HTTP middleware tests on macOS
  • Repro concept: exercise requests with no token, malformed/invalid token, and OAuth requests lacking required scopes.

Validation requirements

  • Add targeted middleware/error tests for each classification.
  • Preserve WWW-Authenticate challenge behavior where applicable.
  • Document the new machine-readable codes.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions