J'ai des informations d'identification de base de données stockées dans Vault.
Comment puis-je prendre/utiliser les informations d'identification pour Hibernate avant Hibernate init?Informations d'identification du coffre-fort de printemps et d'Hibernation
0
A
Répondre
1
Il y a ma solution.
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
}
Et utilisé l'expression de printemps Langue dans le contexte
<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
Vous préférez fournir des informations d'identification à votre source de données qu'à Hibernate. Il n'y a pas d'intégration pour injecter des informations d'identification dans une configuration persistence.xml
. En fonction de votre application et de la configuration, vous souhaitez prendre la route proposée par @StanislavL. Si votre application est basée sur Spring Boot, regardez Spring Cloud Vault MySQL example. Il configure spring.datasource.username
et spring.datasource.password
pour vous, donc vous n'avez besoin d'aucune configuration supplémentaire.
Cela dépend de la façon dont vous Initialiser votre mise en veille prolongée. Pour autant que je puisse voir le coffre-fort fonctionne comme un stockage de propriétés, tout ce dont vous avez besoin est d'ajouter '@Value (" $ {password} ") String mot de passe;' et d'utiliser le mot de passe pour initialiser hibernate. – StanislavL