[英]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.