簡體   English   中英

Springboot解密JNDI tomcat密碼

[英]Springboot decrypt JNDI tomcat password

我在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)文件,則可以指定自己的BasicDataSourceFactory實現-這樣它將是初始化數據源的工廠。 在您的自定義實現中,您可以利用解密代碼服務來處理加密的密碼。

如果您無權訪問server.xml一種方法是使用UserCredentialsDataSourceAdapter代理目標JNDI數據源。

目標JDBC數據源的適配器,將指定的用戶憑據應用於每個標准的getConnection()調用,隱式調用目標上的getConnection(用戶名,密碼)。 所有其他方法僅委托給目標DataSource的相應方法。

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

1)加載JNDI數據源

2)將JNDI數據源強制轉換為Tomcat 數據源 ,以便能夠調用getUsername()getPassword()

3)在UserCredentialsDataSourceAdapter ,在調用getConnection(username, password)之前解密密碼-所有其他數據源調用都將委派給原始數據源,只有getConnection(username, password)被代理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM