2017-06-01 166 views
0

我有一些存储在Vault中的数据库凭证。
在Hibernate init之前,我如何获取/使用Hibernate的凭证?Spring Vault和休眠凭证

+0

这取决于你如何初始化的休眠。至于我可以看到Vault作为属性存储工具,所以您只需添加'@Value(“$ {password}”)字符串密码;'并使用密码初始化hibernate。 – StanislavL

回答

1

有我的解决方案。

public class DatabaseCredentialsLogic { 
    private String vaultSecretPath; 
    private VaultTemplate vaultTemplate; 
    private DatabaseCredentials databaseCredentials; 

    @Autowired 
    public DatabaseCredentialsLogic(VaultTemplate vaultTemplate, Environment env) { 
     this.vaultTemplate = vaultTemplate; 
     vaultSecretPath = env.getProperty("vault.secret.path"); 
    } 

    public void init() { 
     VaultResponseSupport<DatabaseCredentials> response = 
      vaultTemplate.read(vaultSecretPath, DatabaseCredentials.class); 
     databaseCredentials = response.getData(); 
    } 

    public String getUrl() { 
     return databaseCredentials.getUrl(); 
    } 

    // Getters login & password 
} 

,只用于在上下文中春表达式语言

<context:component-scan base-package="my.package" /> 
<bean id="databaseCredentials" class="my.package.DatabaseCredentialsLogic" init-method="init"/> 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
     destroy-method="close"> 
    <property name="driverClassName" value="oracle.jdbc.OracleDriver" /> 
    <property name="url" value="#{databaseCredentials.url}" /> 
    <property name="username" value="#{databaseCredentials.login}" /> 
    <property name="password" value="#{databaseCredentials.password}" /> 
</bean> 
1

您宁愿为您的数据源提供证书而不是Hibernate。没有集成将凭证注入到persistence.xml配置中。

根据您的应用程序和设置你要么采取@StanislavL建议的路线。

如果你的应用程序是基于Spring Boot的,那么看看Spring Cloud Vault MySQL example。它为你配置spring.datasource.usernamespring.datasource.password,所以你不需要任何额外的设置。