我的密钥库密码保存在服务器上,我从保险库中提取该密码。我想提供 quarkus.http.ssl.certificate.key-store-password 的路径而不是硬编码的密码。在开始之前我们是否有任何拦截器,以便可以使用某些 @override 实现从该文件加载密码?
或者其他一些方法。我不想将密码文件放在项目中。我想在 application.yaml 中提供路径。
夸库斯2.7
您可以使用自定义配置源:
import io.quarkus.runtime.annotations.ConfigItem;
import io.quarkus.runtime.annotations.ConfigRoot;
import org.eclipse.microprofile.config.spi.ConfigSource;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
@ConfigRoot(name = "keystore-password")
public class KeystorePasswordConfig {
@ConfigItem(name = "password-file")
public String passwordFile;
}
public class CustomConfigSource implements ConfigSource {
private final Map<String, String> properties = new HashMap<>();
public CustomConfigSource(KeystorePasswordConfig keystorePasswordConfig) {
loadPasswordFromFile(keystorePasswordConfig.getPasswordFile());
}
private void loadPasswordFromFile(String passwordFile) {
try {
String password = Files.readString(Paths.get(passwordFile));
properties.put("quarkus.http.ssl.certificate.key-store-password", password);
} catch (IOException e) {
// Handle file read exception
}
}
@Override
public Map<String, String> getProperties() {
return properties;
}
@Override
public String getValue(String propertyName) {
return properties.get(propertyName);
}
@Override
public String getName() {
return "CustomConfigSource";
}
}
之后,配置 Quarkus 以在您的应用程序中使用此自定义 ConfigSource:
keystore-password:
password-file: /path/to/password/file
quarkus:
config:
sources:
custom-config-source:
class: your.package.CustomConfigSource