{"record":{"id":"3ef2a1e6805ab07e","repo":"quarkusio/quarkus","slug":"configuration-has-2-different-id-values-key-a","errorCode":null,"errorMessage":"Configuration has 2 different id values: '<key>' and '<id>'","messagePattern":"Configuration has 2 different id values: '<key>' and '<id>'","errorType":"validation","errorClass":"ConfigurationException","httpStatus":null,"severity":"error","filePath":"extensions/oidc-common/runtime/src/main/java/io/quarkus/oidc/common/runtime/OidcCommonUtils.java","lineNumber":596,"sourceCode":"\n    private static SignatureAlgorithm getSignatureAlgorithm(Credentials credentials, SignatureAlgorithm defaultAlgorithm) {\n        if (credentials.jwt().signatureAlgorithm().isPresent()) {\n            try {\n                return SignatureAlgorithm.fromAlgorithm(credentials.jwt().signatureAlgorithm().get());\n            } catch (Exception ex) {\n                throw new ConfigurationException(\"Unsupported signature algorithm\");\n            }\n        } else {\n            return defaultAlgorithm;\n        }\n    }\n\n    public static void verifyConfigurationId(String defaultId, String configKey, Optional<String> configId) {\n        if (configKey.equals(defaultId)) {\n            throw new ConfigurationException(\"configuration id '\" + configKey + \"' duplicates the default configuration id\");\n        }\n        if (configId.isPresent() && !configKey.equals(configId.get())) {\n            throw new ConfigurationException(\"Configuration has 2 different id values: '\"\n                    + configKey + \"' and '\" + configId.get() + \"'\");\n        }\n\n    }\n\n    public static String initClientSecretBasicAuth(OidcClientCommonConfig oidcConfig, String clientSecret) {\n        if (clientSecret != null && isClientSecretBasicAuthRequired(oidcConfig.credentials())) {\n            return basicSchemeValue(oidcConfig.clientId().get(), clientSecret);\n        }\n        return null;\n    }\n\n    public static String basicSchemeValue(String name, String secret) {\n        return OidcConstants.BASIC_SCHEME + \" \"\n                + Base64.getEncoder().encodeToString((name + \":\" + secret).getBytes(StandardCharsets.UTF_8));\n\n    }\n","sourceCodeStart":578,"sourceCodeEnd":614,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/oidc-common/runtime/src/main/java/io/quarkus/oidc/common/runtime/OidcCommonUtils.java#L578-L614","documentation":"Each OIDC named configuration is identified by its config key and optionally by an explicit id property. If the explicit id differs from the config key, Quarkus cannot resolve which configuration is referenced and fails fast at startup.","triggerScenarios":"verifyConfigurationId called with a config key '<key>' and an explicit configuration-id '<id>' property (e.g. quarkus.oidc.\"a\".tenant-id=b or credentials/configuration id mismatch) where the two values differ.","commonSituations":"Setting quarkus.oidc.\"tenant-x\".tenant-id=tenant-y by mistake; renaming a config key without updating the matching id property; template-generated config where key and id drifted apart.","solutions":["Make the explicit id property value equal the config key (e.g. quarkus.oidc.\"tenant-x\".tenant-id=tenant-x)","Or delete the redundant explicit id property and rely on the config key alone","Search config files (application.properties/yml, env vars) for the old id value and update all occurrences"],"exampleFix":"// before\nquarkus.oidc.\"tenant-a\".tenant-id=tenant-b\n// after\nquarkus.oidc.\"tenant-a\".tenant-id=tenant-a","handlingStrategy":"validation","validationCode":"String key = \"tenant-a\";\nString idProp = ConfigProvider.getConfig().getOptionalValue(\"quarkus.oidc.\\\"tenant-a\\\".tenant-id\", String.class).orElse(key);\nif (!idProp.equals(key)) throw new IllegalStateException(\"Config id mismatch: key=\" + key + \" id=\" + idProp);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Omit explicit id properties and rely on the config key","If explicit ids are used, generate them from the key name","Add config linting in CI to compare keys with their id properties"],"tags":["oidc","config","naming"],"backgroundTag":"duplicate-config-id","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}