如何创建自定义数据源凭据提供程序,例如从磁盘上的文件读取凭据?我需要一种通过代码设置凭据的方法。我猜这就是在Quarkus中使用的方式。
quarkus.datasource.username =我想在代码中设置
quarkus.datasource.password =我想在代码中设置
我只看到hashicorp保险库集成。我需要一种在自定义凭据提供程序中执行此操作的方法。我可以看到有一种方法可以设置代表您的提供程序的类,但是该类应实现什么接口?
从文档中
quarkus.datasource.credentials-provider =?
quarkus.datasource.credentials-provider-type =?
凭据提供者类型。它是凭据提供程序bean的@Named值。它用于区分是否有多个CredentialsProvider bean。对于Vault,它是:vault-credentials-provider。如果只有一个凭据提供者,则不需要。
有人可以帮忙吗?
答案 0 :(得分:2)
有趣。我们在设计合同时只考虑了保险柜,因此该接口称为io.quarkus.vault.CredentialsProvider,位于quarkus-vault-spi模块中。
话虽如此,我认为您可以将该模块添加到您的项目中(它没有任何Vault依赖项)。然后,您可以实现该接口,一切就可以了。
您的CredentialsProvider
必须是CDI bean,因此您应该使其成为@Singleton
或@ApplicationScoped
。
然后,您只需要为quarkus.datasource.credentials-provider=<value here>
定义一个值。该名称将传递给凭据提供者,在Vault中使用。
在您的情况下,只需定义它即可。
如果它对您有用,您能在我们的跟踪器中打开一个问题吗?我认为我们应该使该接口成为数据源扩展的一部分,而不是特定于保险柜。
更新:我在这里创建了一个示例项目:https://github.com/gsmet/quarkus-credentials-provider。只需运行mvn clean install(您需要Docker),就会看到CredentialsProvider被调用。
答案 1 :(得分:2)
此模式现已在https://github.com/quarkusio/quarkus/pull/9032中得到正式支持,并在https://github.com/quarkusio/quarkus/pull/9552中得到了记录
答案 2 :(得分:0)
是的,o.quarkus.vault.CredentialsProvider应该是HashiCorp Vault中立的。 请参阅此问题以获取一些指导:https://github.com/quarkusio/quarkus/issues/6896#issuecomment-581014674