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
中正式支持
如何创建自定义数据源凭据提供程序,例如从磁盘上的文件中读取凭据?我需要一种从代码设置凭据的方法。我想这就是 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
中正式支持