无需自定义CredentialsProvider,如何通过SmallRye Config密钥库配置数据库密码?
我来帮你梳理下不用自定义CredentialsProvider的解决方案,其实SmallRye Config的密钥库源本身就和普通配置源无缝集成,Quarkus数据源直接就能用,步骤超简单:
1. 确认密钥库源配置无误
你已经配置好的密钥库源是对的,再贴出来给你确认下:
# 配置密钥库源 smallrye.config.source.keystore.db.path = db.p12 smallrye.config.source.keystore.db.password = ${DB_VAULT_SECRET}
这个配置会把db.p12里的所有密钥别名,自动转换成SmallRye Config的配置属性——别名就是配置属性的名称,对应的值就是你存在密钥库中的秘密内容。
2. 直接在数据源配置中引用密钥库别名
你之前卡壳的quarkus.datasource.db.password,其实只要直接用${你的密钥别名}就能引用密钥库中的密码值。比如你之前通过代码能拿到aliasinvault对应的值,那直接这么配:
quarkus.datasource.db.username = ${DB_USERNAME} # 直接引用密钥库中的别名,SmallRye Config会自动从密钥库中解析出对应秘密 quarkus.datasource.db.password = ${aliasinvault}
完全不需要设置quarkus.datasource.db.credentials-provider,因为SmallRye Config的密钥库源已经把密钥库的秘密暴露成了标准的配置属性,Quarkus的数据源会像读取普通环境变量、配置文件值一样,直接获取这个属性。
额外小提示
如果你给密钥库源加了前缀配置(比如smallrye.config.source.keystore.db.prefix=db.),那密钥库中的别名会自动带上这个前缀作为配置属性名。比如你密钥库中的别名是password,那对应的配置属性名就是db.password,引用的时候就写${db.password}就行。
之前你误以为要用到CredentialsProvider,其实那是旧的quarkus-file-vault的思路,SmallRye Config作为统一的配置管理体系,已经把密钥库的秘密完全整合到配置流程里了,根本不需要额外写自定义Provider来桥接~
内容来源于stack exchange

