Quarkus:数据源自定义凭据提供程序

时间:2020-04-24 11:56:10

标签: java jakarta-ee quarkus

如何创建自定义数据源凭据提供程序,例如从磁盘上的文件读取凭据?我需要一种通过代码设置凭据的方法。我猜这就是在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。如果只有一个凭据提供者,则不需要。

有人可以帮忙吗?

3 个答案:

答案 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