Fix guide · info · openid_configuration_exposed

OIDC discovery document exposed

What this rule means

Your /.well-known/openid-configuration is publicly reachable. Required if you are an OpenID Connect provider — this is the document clients fetch to discover your token endpoint, supported scopes, and JWKS URI. Surfaced here as architectural intel so you know what's visible to anyone doing reconnaissance.

Why it matters

OpenID Connect discovery (RFC 8414) standardises a single URL — /.well-known/openid-configuration — that describes everything a client needs to integrate with your identity provider. If you operate an OIDC provider, you must publish this document. If you don't, you shouldn't.

What the document reveals:

None of this is a vulnerability. All of it is useful for an attacker mapping your auth surface before trying anything else.

When this finding fires unexpectedly: you're not running an IdP, but something in your stack (a misconfigured reverse proxy, a "smart" routing rule, an embedded library exposing its config) is serving the discovery doc at your origin. Investigate which subsystem is responding and decide whether it should be.

How to fix it

If you are intentionally running an OIDC provider:

If you didn't intentionally publish this:

  1. Find which subsystem is responding. Common culprits: Keycloak, Authentik, Auth0 self-host, Supabase Auth, NextAuth.js (/api/auth/openid-configuration or similar), or a reverse proxy with a default upstream.
  2. Block the path at the edge if you don't actually need it published. CF Pages _headers/redirect rules can return 404 for /.well-known/openid-configuration.
  3. If you do need it published but the issuer URL listed is internal-only (https://internal.example.com), update the issuer config so the document advertises the public URL instead.

Did vibecheck flag this on your app?

If you reached this page from a vibecheck inspection report, the redacted match in your scan output is the exact string we found in your bundle. After applying the fix above, run the inspection again — the finding should clear.

Run another inspection