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

Quarkus: Data source custom credentials provider

如何创建自定义数据源凭据提供程序,例如从磁盘上的文件中读取凭据?我需要一种从代码设置凭据的方法。我想这就是 Quarkus 的方法。

quarkus.datasource.username=我想在代码中设置这个

quarkus.datasource.password=我想在代码中设置这个

我只看到了 hashicorp 保险库集成。我需要一种在自定义凭据提供程序中执行此操作的方法。我可以看到有一种方法可以设置代表您的提供商的 class 但是 class 应该实现什么接口?

来自文档:

quarkus.datasource.credentials-提供商=?

quarkus.datasource.credentials-提供商类型=?

凭据提供程序类型。它是凭证提供程序 bean 的 @Named 值。它用于区分是否有多个 CredentialsProvider bean 可用。对于 Vault,它是:vault-credentials-provider。如果只有一个凭据提供程序可用,则不需要。

有人可以帮忙吗?

有意思。我们在设计该合约时只考虑了 Vault,因此该接口称为 io.quarkus.vault.CredentialsProvider 并且位于 quarkus-vault-spi 模块中。

也就是说,我认为您可以将该模块添加到您的项目中(它没有任何 Vault 依赖项)。然后你就可以实现那个接口,一切都应该没问题。

您的 CredentialsProvider 需要是 CDI bean,因此您应该将其设为 @Singleton@ApplicationScoped

那么您只需要为 quarkus.datasource.credentials-provider=<value here> 定义一个值。该名称将传递给凭据提供程序,并在 Vault 的情况下使用。

对于您的情况,只需定义它即可。

如果它对你有用,你能在我们的跟踪器中打开一个问题吗?我认为我们应该将该接口作为数据源扩展的一部分,而不是特定于 Vault 的。

更新:我在这里创建了一个示例项目:https://github.com/gsmet/quarkus-credentials-provider。只需 运行 mvn clean install(你需要 Docker),你就会看到你的 CredentialsProvider 被调用。

是的,o.quarkus.vault.CredentialsProvider 意味着 HashiCorp Vault 是中立的。 请参阅此问题以获取一些指导:https://github.com/quarkusio/quarkus/issues/6896#issuecomment-581014674

此模式现已在 https://github.com/quarkusio/quarkus/pull/9032 and documented in https://github.com/quarkusio/quarkus/pull/9552

中正式支持