{"record":{"id":"4f895da0289aea90","repo":"quarkusio/quarkus","slug":"registered-oidc-client-can-not-make-requests-to-th","errorCode":null,"errorMessage":"Registered OIDC Client can not make requests to the client configuration endpoint","messagePattern":"Registered OIDC Client can not make requests to the client configuration endpoint","errorType":"exception","errorClass":"OidcClientRegistrationException","httpStatus":null,"severity":"error","filePath":"extensions/oidc-client-registration/runtime/src/main/java/io/quarkus/oidc/client/registration/runtime/RegisteredClientImpl.java","lineNumber":228,"sourceCode":"                        LOG.debug(\"Client has been successfully deleted\");\n                    } else {\n                        String errorMessage = buffer.toString();\n                        LOG.debugf(\"Client delete request has failed:  status: %d, error message: %s\", resp.statusCode(),\n                                errorMessage);\n                    }\n                })\n                .replaceWithVoid();\n    }\n\n    private void checkClosed() {\n        if (closed) {\n            throw new IllegalStateException(\"Registered OIDC Client is closed\");\n        }\n    }\n\n    private void checkClientRequestUri() {\n        if (registrationClientUri == null) {\n            throw new OidcClientRegistrationException(\n                    \"Registered OIDC Client can not make requests to the client configuration endpoint\");\n        }\n    }\n\n    @Override\n    public String registrationUri() {\n        return this.registrationClientUri;\n    }\n\n    @Override\n    public String registrationToken() {\n        return this.registrationToken;\n    }\n\n}\n","sourceCodeStart":210,"sourceCodeEnd":244,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/oidc-client-registration/runtime/src/main/java/io/quarkus/oidc/client/registration/runtime/RegisteredClientImpl.java#L210-L244","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Use an OIDC provider that supports the client configuration endpoint and returns registration_client_uri","Avoid read/update/delete for such clients; only use the initial registration result","Check registrationUri() / registration response before attempting management calls and handle absence gracefully"],"exampleFix":"// before\nregisteredClient.delete(); // throws if no registration_client_uri\n// after\nif (registeredClient.registrationUri() != null) {\n    registeredClient.delete();\n} else {\n    LOG.warn(\"Client configuration endpoint not available; skipping delete\");\n}","handlingStrategy":"validation","validationCode":"if (registeredClient.registrationUri() == null) {\n    // skip read/update/delete\n    return;\n}","typeGuard":"boolean supportsManagement(RegisteredClient c) {\n    return c.registrationUri() != null;\n}","tryCatchPattern":"try {\n    registeredClient.update(metadata);\n} catch (OidcClientRegistrationException e) {\n    LOG.warn(\"Client configuration endpoint unavailable: \" + e.getMessage());\n}","preventionTips":["Verify the provider returns registration_client_uri before relying on management APIs","Guard read/update/delete behind a registrationUri null-check","Test against your real OIDC provider, not only an in-memory stub"],"tags":["oidc","client-registration","missing-endpoint"],"backgroundTag":"registration-client-uri-missing","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-12T22:17:10.623Z"}