我正在开发一个应该部署到Azure的Spring Boot应用程序。使用以下依赖项,我设法将密钥库中的机密用于敏感的应用程序属性:
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-keyvault-secrets-spring-boot-starter</artifactId>
<version>2.1.6</version>
</dependency>
通过设置popertyazure.KeyVault.uri=https://my-vault.vault.azure.net
并配置托管服务标识,我只需从KeyVault中插入秘密名称,如下所示:
@Value("${ServerPassphrase}")
String serverPassphrase;
现在我有了一个数据库连接,密码具有通常的键spring.datasource.password
。不幸的是,Azure KeyVault中的秘密名称不允许使用圆点。-(
是否有一种简单的方法来用破折号替换点,破折号是KeyVault中允许的字符,或者我必须编写一个自定义的属性解析器作为包装器?
所以毕竟,似乎没有简单的方法告诉spring boot使用破折号而不是点。最后,我在MainConfig中编写了一个自定义DataSource
以及一个自定义ServletWebServerFactory
来设置Tomcat的所有ssl属性。如果有人最终来到这里,寻找解决这个问题或类似问题的方法,我将发布一些代码片段,这可能会有所帮助。
DataSource的代码(我使用点符号从应用程序属性中读取所有公共属性,只从KeyVault中读取用户名和密码):
@Value("${db-user}")
String dbUser;
@Value("${db-password}")
String dbPwd;
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource getDataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.username(dbUser);
dataSourceBuilder.password(dbPwd);
return dataSourceBuilder.build();
}
ServletWebServerFactory的代码(所有使用的值都使用@value
-Annotation如上注入):
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
TomcatConnectorCustomizer tomcatConnectorCustomizer = connector -> {
connector.setPort(port);
connector.setScheme("https");
connector.setSecure(true);
Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();
protocol.setSSLEnabled(true);
protocol.setKeystoreType(keyStoreType);
protocol.setKeystoreProvider(keyStoreProvider);
protocol.setKeystoreFile(keyStorePath);
protocol.setKeystorePass(keyStorePassword);
protocol.setKeyAlias(keyAlias);
protocol.setTruststoreFile(trustStorePath);
protocol.setTruststorePass(trustStorePassword);
protocol.setSSLVerifyClient(clientAuth);
};
tomcat.addConnectorCustomizers(tomcatConnectorCustomizer);
return tomcat;
}
这可能已经有人回答或问了,但我无法找到一个满足我的用例。通过在application.properties文件中指定以下属性,我正在spring boot web应用程序(注意:我的应用程序打包为“war”,它不包含嵌入的tomcat)中建立数据库连接。 我正在获得加密的一个“ilwjvmfqopxvbyue17zn6hx8mljngiuu”,并将其放置在属性文件中,如下所示 但是spring无法
问题内容: 我想将带有sqlite3的应用程序部署为Heroku上的数据库。但是,似乎Heroku不支持将sqlite3作为数据库的应用程序。是真的吗 无法在Heroku上部署由sqlite3支持的应用程序吗? PS:我已经使用PythonAnywhere成功部署了我的应用程序,但是现在想知道是否有使用Heroku部署它的任何可能方法。 问题答案: 由于Heroku的dynos没有可在部署之间持久
我已经成功地将我的nodejs后端和PostgreSQL数据库连接到我的ubuntu服务器。我还安装了nginx作为反向代理,当我访问浏览器上的公共ip地址时,它正在工作。 我的问题是,当我关闭Node.js服务器,安装pm2并正确配置pm2时,当我试图加载我的IOS模拟器时,会出现应用程序内的错误,但没有加载任何东西。(我将本地数据库中的所有内容复制到ubuntu数据库中,因此必须显示相同的帖子
我是kubernetes的新手,需要在openshift平台上使用k8s confimap将springboot应用程序的属性文件外部化。我已将属性文件保存在git repo中,作为“greeter.message=Spring Bootmyapplication.properties已在库伯内特斯上挂载为卷!”并使用“oc create confimap myconfig--from-file=
本文向大家介绍SpringBoot中使用com.alibaba.druid.filter.config.ConfigTools对数据库密码加密的方法,包括了SpringBoot中使用com.alibaba.druid.filter.config.ConfigTools对数据库密码加密的方法的使用技巧和注意事项,需要的朋友参考一下 1.在本地Maven仓库中打开Powershell 2.输入命令,然
Spring Boot版本为1.5.6 使用的数据库是SQL Server2016,它也是在docker(windows容器)上。 问题:每当我重新启动SQL DB容器时,应用程序开始给出这个错误。 任何想法可以做什么来解决这个问题。 多谢了。