grails - 将 grails 与 hashcorp vault 集成
问题描述
我正在尝试将 hashcorp vault 集成到 grails 应用程序中。我无法在互联网上找到教程或一些帮助。甚至 grails 文档也没有对此主题发表任何评论。
有谁知道我怎么能做到这一点?
我正在使用 grails 2.5.6
编辑
通过集成,我的意思是让 grails 从 hashcorp vault 中读取属性,而不是我在 Config.groovy 或 DataSource.groovy 中定义的属性或类路径中的其他属性。我定义了一个自定义占位符,它能够到达我的 hashcorp 保险库,但 grails 无法识别我带来的属性。
MyPlaceholderConfigurer.java
public class MyPlaceholderConfigurer extends GrailsPlaceholderConfigurer {
final static Logger logger = Logger.getLogger(MyPlaceholderConfigurer.class);
public MyPlaceholderConfigurer(GrailsApplication application) {
super(application);
logger.info("XXXXXXXXX: Started MyPlaceholderConfigurer");
}
@Override
protected void loadProperties(Properties props) throws IOException {
logger.info("XXXXXXXXX: loadProperties()");
super.loadProperties(props);
Map<String, Object> vault = HashicorpVault.getSecrets();
props.putAll(vault);
}
}
资源.groovy
propertySourcesPlaceholderConfigurer(MyPlaceholderConfigurer, application) {
environment = getUnrefreshedApplicationContext().getEnvironment()
}
配置文件
grails.config.locations = ["classpath:Principal.properties", "classpath:MyDatabase.groovy"]
解决方案
groovy(或 grails-plugin)没有客户端库。
由于 groovy 与 java 配合得很好,您可以只使用该java-client
库 ( https://www.vaultproject.io/api/libraries.html ),您最可能想要的是 https://github.com/BetterCloud/vault-java-驱动程序,因为驱动程序的 Spring 版本可能与 grails 的 Spring 版本冲突。此外,非 spring 版本针对 java 7+,因此您最终不会解决java 8 new features
与 grails 2.5.x 捆绑的旧 groovy 版本不支持的问题
修改您的BuildConfig.groovy
以获取库:
dependencies {
...
compile 'com.bettercloud:vault-java-driver:3.1.0'
...
}
并按照 github 页面上的说明进行操作。
推荐阅读
- java - 项目从一台计算机移动到另一台计算机后 ImageIO.read() 不起作用
- c - 在C中将数字转换为二进制和十六进制
- python - How to compare two tables and identify a specific type of row to be returned?
- python - Is there some way to find the intersect in multiple file names between multiple CSV headers?
- r - How to create a stand alone legend in R
- php - mb_detect_encoding does not detect SJIS-mac?
- r - 汇总数据框时获取“未使用的参数”
- html - HTML 电子邮件 - 电子邮件中的图像仅在某些设备上显示
- javascript - 如何按键将数组转换为对象?
- android - 如何在android中制作firebase实时数据库中的密钥?