8000 [CVE-2026-8922] OIDC token introspection ignores realm-level notBefore when client-level notBefore is set · Issue #49118 · keycloak/keycloak · GitHub
[go: up one dir, main page]

Skip to content

[CVE-2026-8922] OIDC token introspection ignores realm-level notBefore when client-level notBefore is set #49118

Closed

Description

@abstractj

Description

When a realm-level notBefore revocation is applied (e.g., via global logout or the "Not Before" revocation policy), the OIDC token introspection endpoint still returns active=true for tokens issued before the realm cutoff, if the client also has a client-level notBefore value configured. The client-level notBefore takes precedence instead of using the more restrictive of the two values.

This causes resource servers that rely on introspection to continue honoring tokens that should have been invalidated by the realm-wide revocation.

Version affected

All current versions.

Expected behavior

When both realm-level and client-level notBefore values are set, token introspection should use the more recent (higher) of the two values. A token issued before the realm-level notBefore cutoff should be reported as active=false, regardless of the client-level notBefore value.

Actual behavior

Token introspection evaluates only the client-level notBefore value when it is present, ignoring the realm-level notBefore. Tokens issued before the realm-level revocation cutoff are returned as active=true if they were issued after the client-level notBefore.

Steps to reproduce

  1. Authenticate as a user or client and obtain a valid access token
  2. Set a client-level notBefore value on the client (e.g., via "Not Before" in the client settings)
  3. Advance the realm-level notBefore by triggering a realm-wide revocation (e.g., global logout or setting the realm "Not Before" policy to the current time)
  4. Call the OIDC introspection endpoint with the token obtained in step 1
  5. Observe that the response returns active=true, even though the token was issued before the realm-level notBefore cutoff

This issue was originally tracked in the private repository. Migrated by @abstractj.

Activity

  1. added
    area/oidcOpenID Connect / OAuth 2.0 — tokens, endpoints, scopes, DCR, PAR, DPoP
    area/coreCore server — startup, configuration, providers/SPIs, cross-cutting concerns
    kind/cveIssues identified as CVEs on third-party dependencies, or issues which Keycloak is not affected
    on May 19, 2026
  2. added theissue type on May 19, 2026
  3. added a commit that references this issue on May 19, 2026
    c5bda80
  4. 21 remaining items

  5. added a commit that references this issue on Jul 20, 2026
    2cf190f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Fields

No fields configured for cve.

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    0