Fix guide · info · openid_credential_issuer_exposed
OpenID Connect verifiable credentials issuer metadata exposed
Your /.well-known/openid-credential-issuer is publicly reachable — you're running an OIDC4VCI verifiable-credential issuer. Surface here so you know which credential types you're publicly advertising.
Why it matters
The OpenID for Verifiable Credential Issuance (OID4VCI) spec defines /.well-known/openid-credential-issuer as the discovery document for verifiable-credential issuers. It lists the issuer URL, supported credential formats (JWT-VC, SD-JWT, mDoc), and the credential types you can issue (e.g. UniversityDegreeCredential, EmployeeIDCredential, HealthRecordCredential).
This is a relatively new spec (finalised in 2024). Few teams intentionally run a VCI issuer. If this finding fires, two scenarios:
- You intentionally issue verifiable credentials. Good — confirm the credential types listed match what you intend to issue, and the issuer URL is your canonical one.
- You didn't know you were running an issuer. Something in your stack (a Microsoft Entra Verified ID integration, an EU digital identity wallet pilot, an IBM/Mattr verifiable-credentials service) configured itself to publish this without you realising. Worth understanding what's running.
How to fix it
- Identify the subsystem serving this file (likely Microsoft Entra Verified ID, an IBM service, or a self-hosted issuer like Mattr, Walt.id, or Sphereon).
- If you don't intend to issue verifiable credentials, disable the issuer feature in the subsystem's admin UI.
- If you do issue credentials, confirm the metadata is accurate:
- The
credential_issuerURL is your canonical issuer URL (not a staging URL). - The
credentials_supportedlist only includes types you actively issue. - The
token_endpointandcredential_endpointare production endpoints.
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