Skip to content

feat(oidc): enforce OAuth 2.1 and RFC 9700 defaults #410

Closed

Description

@Bccorb

Why

Secure defaults that do not need tuning.

What

  • PKCE required for every client
  • No implicit or resource owner password grant
  • Exact redirect URI matching
  • Refresh rotation or sender constraint
  • Documented in the RFC 9700 matrix

Done when

Insecure configurations cannot be created, and the matrix shows each item enforced.

Activity

  1. added this to the v0.21 milestone on Oct 13, 2026
  2. added
    P1Security work outside the FIDO2 track
    secureServes the most-secure promise
    v0.21Targets the v0.21 release
    on Oct 13, 2026
  3. added theissue type on Oct 13, 2026
  4. Bccorb commented on Oct 30, 2026

    @Bccorb
    ContributorAuthor

    Architecture for this is settled in ADR 0001 (#520). The OpenID Provider runs in a separate public login edge (new repo, seamless-auth-oidc-provider) that signs users in through the first-party routes. The auth API stays private and cookie-free. See D1 (locked configuration on the edge), D6 and D12 (the API refuses insecure client settings).

  5. Bccorb commented on Nov 1, 2026

    @Bccorb
    ContributorAuthor

    Shipped in v0.21.0. The edge locks the configuration to the OAuth 2.1 and RFC 9700 defaults (seamless-auth-oidc-provider#15 and #21) and the API refuses insecure client settings. PKCE is required by default and no implicit or password grant exists. The one documented exception is a per-application PKCE and nonce opt-out for confidential clients only (seamless-auth-oidc-provider#28, API #540), which the OpenID conformance plans need; CI checks on every run that a client without the opt-out still refuses a request lacking code_challenge. The matrix is under "Security Defaults" in the guide. Closing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Security work outside the FIDO2 tracksecureServes the most-secure promisev0.21Targets the v0.21 release

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions