{"record":{"id":"8cd5ff5e5fc0faa5","repo":"quarkusio/quarkus","slug":"error-status-s","errorCode":null,"errorMessage":"Error status:%s","messagePattern":"Error status:(.+?)","errorType":"http","errorClass":"io.quarkus.oidc.runtime.OIDCException","httpStatus":null,"severity":"error","filePath":"extensions/oidc/runtime/src/main/java/io/quarkus/oidc/runtime/OidcProviderClientImpl.java","lineNumber":619,"sourceCode":"                        }\n                        return Uni.createFrom().item(buffer.toString());\n                    } else if (resp.statusCode() == 302) {\n                        return Uni.createFrom().failure(OidcCommonUtils.createOidcClientRedirectException(resp));\n                    } else {\n                        return Uni.createFrom().failure(responseException(requestUri, resp, buffer));\n                    }\n                });\n    }\n\n    private static OIDCException responseException(String requestUri, HttpResponse<Buffer> resp, Buffer buffer) {\n        String errorMessage = buffer == null ? null : buffer.toString();\n\n        if (errorMessage != null && !errorMessage.isEmpty()) {\n            LOG.errorf(\"Request %s has failed: status: %d, error message: %s\", requestUri, resp.statusCode(), errorMessage);\n            throw new OIDCException(errorMessage);\n        } else {\n            LOG.errorf(\"Request %s has failed: status: %d\", requestUri, resp.statusCode());\n            throw new OIDCException(\"Error status:\" + resp.statusCode());\n        }\n    }\n\n    @Override\n    public void close() {\n        client.close();\n        if (clientAssertionProvider != null) {\n            clientAssertionProvider.close();\n        }\n    }\n\n    Key getClientJwtKey() {\n        return clientJwtKey;\n    }\n\n    String getClientSecret() {\n        return clientSecret;\n    }","sourceCodeStart":601,"sourceCodeEnd":637,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/oidc/runtime/src/main/java/io/quarkus/oidc/runtime/OidcProviderClientImpl.java#L601-L637","documentation":"Generic failure thrown by OidcProviderClientImpl when an HTTP response from the OIDC provider has an error status but the response body contains no parseable error/error_description fields. The message carries only the HTTP status code (e.g. 'Error status:400'), with the full context logged beforehand as 'Request <uri> has failed: status: <code>'.","triggerScenarios":"Any OIDC endpoint call (token endpoint, revocation, userinfo, PAR) returning 4xx/5xx whose body cannot be parsed into an OAuth2 error JSON — the provider falls through to this catch-all OIDCException.","commonSituations":"Authorization server returning HTML error pages (proxies, WAFs, load balancers); token endpoint rejecting a request with a non-OAuth error body; TLS or reverse-proxy misconfigurations; server outages returning text/plain 502/503.","solutions":["Read the accompanying log line 'Request <uri> has failed: status: <code>' to identify the failing endpoint and status","Hit the same endpoint manually (curl) with identical parameters to inspect the raw response body","If a proxy/WAF returns HTML errors, fix or bypass it; correct the endpoint URL in quarkus.oidc.* config","For 400s, review the grant parameters (code, redirect_uri, client credentials) for mismatches with what was sent in the authorize request"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"// pre-flight: check the OIDC discovery endpoint returns JSON before business calls\nResponse d = httpClient.get(authServerUrl + \"/.well-known/openid-configuration\");\nif (d.statusCode() != 200 || !d.header(\"Content-Type\").contains(\"json\")) {\n    throw new IllegalStateException(\"OIDC endpoint returning non-JSON (status \" + d.statusCode() + \")\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    tokens = oidcClient.getTokens(code);\n} catch (OIDCException e) {\n    if (e.getMessage().startsWith(\"Error status:\")) {\n        int status = Integer.parseInt(e.getMessage().substring(\"Error status:\".length()).trim());\n        if (status >= 500) {\n            return retryWithBackoff(...); // transient provider outage\n        }\n    }\n    throw e;\n}","preventionTips":["Check the log line 'Request <uri> has failed: status: <code>' for endpoint and status context","Curl the failing endpoint with identical parameters to see the raw body","Verify no proxy/WAF intercepts provider responses with HTML error pages","Handle 5xx with retry and backoff; treat 4xx as request/client bugs"],"tags":["oidc","http-error","token-endpoint","network"],"backgroundTag":"oidc-endpoint-http-error","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"}