问题描述
我在tomcat中为JNDI进行以下配置。 我在server.xml中加密了我的密码
<Resource auth="Container"
driverClassName="oracle.jdbc.driver.OracleDriver"
global="jdbc/dbsource"
maxIdle="30"
maxTotal="1000"
maxWaitMillis="100000"
name="jdbc/dbsource"
password=<<unencrypted password>>
type="javax.sql.DataSource"
url=<<dburl>>
username="user" />
我正在运行springboot应用程序,并且已经在application.properties中配置了JNDI名称,如下所示
spring.datasource.jndi-name=java:comp/env/jdbc/dbsource
我直接将JDBCTemplate自动布线到我的Bean类以连接到Oracle db。
我想在tomcat server.xml中加密我的密码。 如何在Spring Boot中覆盖自动配置以解密密码?
1楼
您有很多选择。 下面只是两个。
如果您有权访问server.xml
(假设这是Tomcat)文件,则可以指定自己的实现-这样它将是初始化数据源的工厂。
在您的自定义实现中,您可以利用解密代码服务来处理加密的密码。
如果您无权访问server.xml
一种方法是使用代理目标JNDI数据源。
目标JDBC数据源的适配器,将指定的用户凭据应用于每个标准的getConnection()调用,隐式调用目标上的getConnection(用户名,密码)。 所有其他方法仅委托给目标DataSource的相应方法。
所以基本上这可能是您的流程:
1)加载JNDI数据源
2)将JNDI数据源强制转换为Tomcat ,以便能够调用和
3)在 ,在调用之前解密密码-所有其他数据源调用都将委派给原始数据源,只有被代理。