如何在 context.xml 中加密 Tomcat 9 上数据源的密码?

问题描述 投票:0回答:0

正如标题所说,我们的应用程序在 context.xml 中有资源,我们需要对其进行加密以进行安全审计。我知道 Tomcat 的 FAQ 提到了通过模糊实现的安全性,但我们需要对其进行加密以用于任何审计目的。

当前 context.xml 中的资源如下所示:

<Resource 
      name="jdbc/OracleDataSource" 
      auth="Container" 
      type="javax.sql.DataSource" 
      driverClassName="oracle.jdbc.OracleDriver" 
      url="jdbc:oracle:thin:@ServerName:PORT/NAME" 
      username="APP_USERNAME" 
      password="APP_PASSWORD"
      testWhileIdle="true"
      testOnBorrow="true"
      testOnReturn="false"
      validationQuery="select 1 from dual"
      timeBetweenEvictionRunsMillis="5000"
      maxTotal="100"
      maxIdle="20"
      minIdle="10"
      maxWaitMillis="10000"
      initialSize="10"
      removeAbandonedTimeout="1800"
      removeAbandonedOnBorrow="true"
      removeAbandonedOnMaintenance="true"
      logAbandoned="true"
      minEvictableIdleTimeMillis="30000"
/>

在我们的应用程序代码中,我们使用 RC4 编码,文件知道从 @RC4Encode@XXX,XXX,XXX,XXX,XXX,XXX,XXX 格式解密为其他凭据用途的明文密码。

我希望在我们的 context.xml 中以某种方式实现它,但我不确定如何实现它。我以前在这里看到过一些关于 BasicDataSourceFactory 的帖子,但我不太了解实现,当我尝试导入 BasicDataSourceFactory 时,我得到了 ClassNotFoundException。我确实尝试在 context.xml 中进行变量导入,但是我们无法访问应用程序所在的服务器上的 catalina.properties,也无法访问它所在的文件夹结构,根据我的理解,这消除了使用属性替换或外部 XML 实体的可能性。

如果我能弄清楚如何解决 DataSourceFactory not found 错误,我可以尝试复制一些用于将密码解码回明文的“解码”方法,并直接针对 RC4 编码密码调用解码方法,然后将其传递给 context.xml。

DataSourceFactory 方法的粗略伪代码:

public class APPDataSourceFactory extends BasicDataSourceFactory {
    private String encrypted_pwd = "@RC4Encode@123,456,789,012,345";
    public void decrypt_pwd(encrypted_pwd,key){
        //Decryption Steps
        return decrypted_pwd;
    }
}
java xml tomcat jdbc tomcat9
© www.soinside.com 2019 - 2024. All rights reserved.