quarkusio/quarkus · error · OidcClientRegistrationException

Registered OIDC Client can not make requests to the client c

Error message

Registered OIDC Client can not make requests to the client configuration endpoint

What it means

A registered client can only manage itself at the registration (client configuration) endpoint if the server returned a registration_client_uri. When registrationClientUri is null, checkClientRequestUri() throws OidcClientRegistrationException before read/update/delete proceed, because there is no endpoint to send the management request to.

Source

Thrown at extensions/oidc-client-registration/runtime/src/main/java/io/quarkus/oidc/client/registration/runtime/RegisteredClientImpl.java:228

                        LOG.debug("Client has been successfully deleted");
                    } else {
                        String errorMessage = buffer.toString();
                        LOG.debugf("Client delete request has failed:  status: %d, error message: %s", resp.statusCode(),
                                errorMessage);
                    }
                })
                .replaceWithVoid();
    }

    private void checkClosed() {
        if (closed) {
            throw new IllegalStateException("Registered OIDC Client is closed");
        }
    }

    private void checkClientRequestUri() {
        if (registrationClientUri == null) {
            throw new OidcClientRegistrationException(
                    "Registered OIDC Client can not make requests to the client configuration endpoint");
        }
    }

    @Override
    public String registrationUri() {
        return this.registrationClientUri;
    }

    @Override
    public String registrationToken() {
        return this.registrationToken;
    }

}

View on GitHub (pinned to e1c734241f)

Solutions

  1. Use an OIDC provider that supports the client configuration endpoint and returns registration_client_uri
  2. Avoid read/update/delete for such clients; only use the initial registration result
  3. Check registrationUri() / registration response before attempting management calls and handle absence gracefully

Example fix

// before
registeredClient.delete(); // throws if no registration_client_uri
// after
if (registeredClient.registrationUri() != null) {
    registeredClient.delete();
} else {
    LOG.warn("Client configuration endpoint not available; skipping delete");
}
Defensive patterns

Strategy: validation

Validate before calling

if (registeredClient.registrationUri() == null) {
    // skip read/update/delete
    return;
}

Type guard

boolean supportsManagement(RegisteredClient c) {
    return c.registrationUri() != null;
}

Try / catch

try {
    registeredClient.update(metadata);
} catch (OidcClientRegistrationException e) {
    LOG.warn("Client configuration endpoint unavailable: " + e.getMessage());
}

Prevention

When it happens

Trigger: Calling read(), update(), or delete() on a RegisteredClient whose registration response contained no registration_client_uri — typically when the provider issued the client without management capabilities.

Common situations: OIDC providers that support registration but not the management endpoint; tests using providers that omit registration_client_uri; misconfigured issuer that returns minimal registration metadata.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/4f895da0289aea90. Report an issue: GitHub.