2.52. Jasypt


使用 Jasypt 的安全性

2.52.1. 什么是内部

有关用法和配置详情,请参阅上述链接。

2.52.2. Maven 协调

在 code.quarkus.redhat.com 上使用此扩展创建新项目

或者将协调添加到现有项目中:

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-jasypt</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

2.52.3. 使用方法

Camel Quarkus 中的 Jasypt 配置由配置属性 驱动。

最小预期是,您使用配置属性 quarkus.camel.jasypt.password 为 Jasypt 解密提供 master 密码。

您可以通过以下描述的 quarkus.camel.jasypt 选项选择 Jasypt 配置的加密算法和其他方面。

默认情况下,您不需要编写自定义代码来配置 Camel JasyptPropertiesParserPropertiesComponent。这是自动为您完成的。

任何添加到 application.properties 的 Camel 配置属性都可以使用 Jasypt 保护。要加密值,有一个可使用 JBang 运行的实用程序。

jbang org.apache.camel:camel-jasypt:{camel-version} -c encrypt -p secret-password -i "Some secret content"
Copy to Clipboard Toggle word wrap
重要

如果您选择将不同的 Jasypt 算法用于默认值(PBEWithMD5AndDES),您必须提供 -a (算法)、-riga (IV generator algorithm)& -rsga (Salt generator 算法)参数来设置加密中使用的正确算法。否则,您的应用程序将无法解密配置值。

或者,在 dev 模式下运行时,打开 Dev UI,再单击 Camel Jasypt 窗格中的"utilities"链接。接下来,选择 'Decrypt' 或 'Encrypt' 操作,输入一些文本并点提交按钮。操作的结果会与一个按钮一起输出,以将其复制到剪贴板中。

配置属性可以添加到 application.properties 中,其加密值包括在 ENC () 内。

my.secret = ENC(BoDSRQfdBME4V/AcugPOkaR+IcyKufGz)
Copy to Clipboard Toggle word wrap

在 Camel 路由中,您可以使用标准占位符语法引用属性名称,其值将被解密。

public class MySecureRoute extends RouteBuilder {
    @Override
    public void configure() {
        from("timer:tick?period=5s")
            .to("{{my.secret}}");
    }
}
Copy to Clipboard Toggle word wrap
提示

您可以通过带有 .secret 的后缀属性值来屏蔽 Camel 中的安全敏感配置。您还可以使用配置 camel.main.autoConfigurationLogSummary = false 来禁用启动配置摘要。

2.52.3.1. 注入加密的配置

您可以使用 @ConfigProperty 注释将加密配置注入 Camel 路由或 CDI Bean 中。

@ApplicationScoped
public class MySecureRoute extends RouteBuilder {
    @ConfigInject("my.secret")
    String mySecret;

    @Override
    public void configure() {
        from("timer:tick?period=5s")
            .to(mySecret);
    }
}
Copy to Clipboard Toggle word wrap
2.52.3.1.1. 保护备用配置源

如果要在独立于 application.properties 的文件中保留 secret 配置,您可以使用 quarkus.config.locations 配置选项来指定额外的配置文件。

在原生模式中,还必须向 quarkus.native.resources.includes 添加任何其他配置文件资源路径。

2.52.3.1.2. 精细控制 Jasypt 配置

如果您需要比默认配置提供的 Jasypt 配置更精细的控制,可以使用以下选项:

2.52.3.1.2.1. JasyptConfigurationCustomizer

实施 JasyptConfigurationCustomizer 类,以自定义 Jasypt EnvironmentStringPBEConfig 的任何方面。

package org.acme;

import org.apache.camel.quarkus.component.jasypt.JasyptConfigurationCustomizer;
import org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig;
import org.jasypt.iv.RandomIvGenerator;
import org.jasypt.salt.RandomSaltGenerator;

public class JasyptConfigurationCustomizer implements JasyptConfigurationCustomizer {
    public void customize(EnvironmentStringPBEConfig config) {
        // Custom algorithms
        config.setAlgorithm("PBEWithHmacSHA256AndAES_256");
        config.setSaltGenerator(new RandomSaltGenerator("PKCS11"));
        config.setIvGenerator(new RandomIvGenerator("PKCS11"));
        // Additional customizations...
    }
}
Copy to Clipboard Toggle word wrap

application.properties 中,添加 quarkus.camel.jasypt.configuration-customizer-class-name 配置属性。

quarkus.camel.jasypt.configuration-customizer-class-name = org.acme.MyJasyptEncryptorCustomizer
Copy to Clipboard Toggle word wrap
2.52.3.1.2.2. 禁用自动 Jasypt 配置

如果要使用 'classic' Java DSL 方法配置 Camel Jasypt,您可以使用 quarkus.camel.jasypt.enabled = false 禁用自动配置。

这可让您手动配置 Camel JasyptPropertiesParserPropertiesComponent

注意

在此模式中,您无法使用 @ConfigProperty 注释来注入加密的配置属性。

import org.apache.camel.CamelContext;
import org.apache.camel.component.jasypt.JasyptPropertiesParser;
import org.apache.camel.component.properties.PropertiesComponent;

public class MySecureRoute extends RouteBuilder {
    @Override
    public void configure() {
        JasyptPropertiesParser jasypt = new JasyptPropertiesParser();
        jasypt.setPassword("secret");

        PropertiesComponent component = (PropertiesComponent) getContext().getPropertiesComponent();
        jasypt.setPropertiesComponent(component);
        component.setPropertiesParser(jasypt);

        from("timer:tick?period=5s")
            .to("{{my.secret}}");
    }
}
Copy to Clipboard Toggle word wrap
注意

如果您在 PropertiesComponent 上调用 setLocation (…​) 来使用 classpath: 前缀指定自定义配置文件位置,您必须将文件添加到 quarkus.native.resources.includes 中,以便将其加载到原生模式中。

2.52.4. 其他 Camel Quarkus 配置

Expand
配置属性类型default

quarkus.camel.jasypt.enabled

将这个选项设置为 false 将禁用 Jasypt 与 Quarkus SmallRye 配置的集成。但是,您可以使用"类"方法手动配置 Jasypt,来手动配置 JasyptPropertiesParser 和 PropertiesComponent。如需更多详细信息,请参阅用法部分。

布尔值

true

quarkus.camel.jasypt.algorithm

用于解密的算法。

string

PBEWithMD5AndDES

quarkus.camel.jasypt.password

Jasypt 用于解密配置值的主密码。这个选项支持影响 master 密码查找的前缀。

sys: 将从 JVM 系统属性查找值。sysenv: 将使用给定键从 OS 系统环境中查找值。

string

 

quarkus.camel.jasypt.random-iv-generator-algorithm

使用给定算法使用 RandomIvGenerator 配置 Jasypt StandardPBEStringEncryptor。

string

SHA1PRNG

quarkus.camel.jasypt.random-salt-generator-algorithm

使用给定算法使用 RandomSaltGenerator 配置 Jasypt StandardPBEStringEncryptor。

string

SHA1PRNG

quarkus.camel.jasypt.configuration-customizer-class-name

org.apache.camel.quarkus.component.jasypt.JasyptConfigurationCustomizer 的完全限定类名称。这提供了可完全控制 Jasypt 配置的可选功能。

string

 

在构建时修复的配置属性。所有其他配置属性可在运行时覆盖。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部