{"record":{"id":"4b9c58ce4f95d7f5","repo":"quarkusio/quarkus","slug":"unable-to-find-the-credentials-provider-named","errorCode":null,"errorMessage":"Unable to find the credentials provider named '\" + name + \"'","messagePattern":"Unable to find the credentials provider named '\" \\+ name \\+ \"'","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"extensions/tls-registry/runtime/src/main/java/io/quarkus/tls/runtime/keystores/CredentialProviders.java","lineNumber":69,"sourceCode":"            return Optional.ofNullable(credentials.get(config.passwordKey()));\n        }\n        return Optional.empty();\n    }\n\n    static CredentialsProvider lookup(String name) {\n        ArcContainer container = Arc.container();\n        InstanceHandle<CredentialsProvider> instance;\n        if (name == null) {\n            instance = container.instance(CredentialsProvider.class);\n        } else {\n            instance = container.instance(CredentialsProvider.class, NamedLiteral.of(name));\n        }\n\n        if (!instance.isAvailable()) {\n            if (name == null) {\n                throw new RuntimeException(\"Unable to find the default credentials provider\");\n            } else {\n                throw new RuntimeException(\"Unable to find the credentials provider named '\" + name + \"'\");\n            }\n        }\n\n        return instance.get();\n    }\n}\n","sourceCodeStart":51,"sourceCodeEnd":76,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/tls-registry/runtime/src/main/java/io/quarkus/tls/runtime/keystores/CredentialProviders.java#L51-L76","documentation":"Same as the default-provider case, but this variant is thrown when an explicitly named credentials provider was requested and no CDI bean of type CredentialsProvider is registered under that @Named qualifier.","triggerScenarios":"Config such as quarkus.tls.<name>.key-store.jks.credentials-provider.name=myprovider (or trust-store equivalent) with no CredentialsProvider bean named 'myprovider' in the container.","commonSituations":"Typo in the provider name in config; provider registered with a different @Named value; provider bean only present in a different Quarkus profile/build.","solutions":["Fix the provider name in the TLS config to match the @Named value of the bean","Register the provider bean with NamedLiteral/name matching the config","Verify with a startup log or dev-mode CDI listing that the named bean exists"],"exampleFix":"# before (no bean named 'vault')\nquarkus.tls.my-tls.key-store.jks.credentials-provider.name=vault\n# after (bean named 'main' exists)\nquarkus.tls.my-tls.key-store.jks.credentials-provider.name=main","handlingStrategy":"validation","validationCode":"String name = cfg.getValue(\"quarkus.tls.my-tls.key-store.jks.credentials-provider.name\", String.class);\nboolean exists = Arc.container().instance(CredentialsProvider.class,\n        NamedLiteral.of(name)).isAvailable();\nif (!exists) throw new IllegalStateException(\"No CredentialsProvider named \" + name);","typeGuard":null,"tryCatchPattern":"try {\n    Quarkus.run(args);\n} catch (RuntimeException e) {\n    if (e.getMessage() != null && e.getMessage().contains(\"credentials provider named\")) {\n        log.errorf(\"Provider name mismatch in TLS config: %s\", e.getMessage());\n    }\n    throw e;\n}","preventionTips":["Keep provider names in config in sync with @Named bean values","Centralize provider names in constants referenced by both config and code","List registered named providers during CI verification"],"tags":["tls","credentials-provider","cdi","config"],"backgroundTag":"missing-credentials-provider","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"}