【问题标题】:How to Encrypt and Decrypt using Jasypt in Quarkus for database password如何在 Quarkus 中使用 Jasypt 加密和解密数据库密码
【发布时间】:2021-07-13 12:10:25
【问题描述】:

我们如何在 Quarkus 中使用 jasypt 加密和解密属性文件中的数据库密码。 解密将在加载或启动应用程序时进行。 请分享您对此的意见或想法。

@chrisgleissner 非常感谢您的帮助。

application.properties

quarkus.datasource.db-kind=postgre quarkus.datasource.username=用户名 quarkus.datasource.password=encrypted pwd(加密需要在加载应用时解密)

【问题讨论】:

  • 为了安全起见,Quarkus 应该支持这一点。 Springboot 支持 ENC()

标签: quarkus


【解决方案1】:

您可以实现自定义凭据提供程序。界面为:

public interface CredentialsProvider {

    String USER_PROPERTY_NAME = "user";
    String PASSWORD_PROPERTY_NAME = "password";

    Map<String, String> getCredentials(String credentialsProviderName);

}

来自文档:

USER_PROPERTY_NAME 和 PASSWORD_PROPERTY_NAME 是标准属性,任何支持基于用户名/密码的身份验证的消费扩展都应该识别这些属性。要求实现是有效的@ApplicationScoped CDI bean。

您的加密密码应该可以通过系统属性或环境变量获得。

例子:

@ApplicationScoped
@Unremovable
public class MyCredentialsProvider implements CredentialsProvider {

    @Override
    public Map<String, String> getCredentials(String credentialsProviderName) {

        Map<String, String> properties = new HashMap<>();
        properties.put(USER_PROPERTY_NAME, "hibernate_orm_test");
        properties.put(PASSWORD_PROPERTY_NAME, decryptPassword());
        return properties;
    }

}

并在 application.properties 中将凭据提供程序设置为自定义。

quarkus.datasource.credentials-provider=custom

您可以在文档指南中查看此部分:custom credentials provider

【讨论】:

  • 感谢您的回复,我已经升级了 quarkus 版本 1.12.2.final 版本,并且我已经实施了这些更改。我们如何从 quarkus 的文件系统中读取密码。我使用了以下配置,但无法读取该位置。您对此有什么建议吗?例如:用户名:sample_app 密码:FILE(/opt/pwd/app/appdb.pwd)---> 但该位置无法读取它并且 quarkus 无法处理 FILE(xxxxxx)。你对此有什么想法吗?其密码为 FILE(/opt/pwd/app/appdb.pwd) 而不是实际值。
  • 您能否发布一个完整的示例来说明您正在尝试做什么?你能用一些代码和 application.properties 来编辑你的问题吗?
【解决方案2】:

您可以创建 io.smallrye.config.ConfigSourceInterceptor 的实现。 在 getValue 方法中,使用 Jasypt 解密您想要的属性(或多个属性)。 不要忘记将您的实现类注册为 SPI META-INF/services/io.smallrye.config.ConfigSourceInterceptor。

更多信息https://smallrye.io/docs/smallrye-config/main/index.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    相关资源
    最近更新 更多