2017-06-01 192 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,所以你不需要任何額外的設置。