当前位置: 代码迷 >> java >> Springboot解密JNDI tomcat密码
  详细解决方案

Springboot解密JNDI tomcat密码

热度:66   发布时间:2023-07-25 19:40:47.0

我在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中覆盖自动配置以解密密码?

您有很多选择。 下面只是两个。

如果您有权访问server.xml (假设这是Tomcat)文件,则可以指定自己的实现-这样它将是初始化数据源的工厂。 在您的自定义实现中,您可以利用解密代码服务来处理加密的密码。

如果您无权访问server.xml一种方法是使用代理目标JNDI数据源。

目标JDBC数据源的适配器,将指定的用户凭据应用于每个标准的getConnection()调用,隐式调用目标上的getConnection(用户名,密码)。 所有其他方法仅委托给目标DataSource的相应方法。

所以基本上这可能是您的流程:

1)加载JNDI数据源

2)将JNDI数据源强制转换为Tomcat ,以便能够调用和

3)在 ,在调用之前解密密码-所有其他数据源调用都将委派给原始数据源,只有被代理。

  相关解决方案