背景
想起面試的時候,面試官問我現在大家用Spring框架,數據庫、ES之類的密碼都是配置在配置文件中的,有很大的安全隱患,你有考慮過怎么解決嘛?
當時我回答是可以在項目啟動的過程中的命令行追加的方式,感覺面試官不太滿意,讓我回去等通知~
所以才想起來查了下Jasypt這個組件,有了這篇文檔。
基礎配置
這個組件的使用還是比較簡單的,引入POM依賴,設置加密方式,添加前后綴即可使用
<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version>
</dependency>
運行原理
根據我的理解,Jasypt的工作原理如下
- jasypt-spring-boot-starter這個包里面配置了Spring需要掃描的路徑和初始化的bean對象
- 初始的bean對象會讀取Spring的配置對象容器,然后將容器內容的配置對象都替換為Jasypt中EncryptablePropertySource,也就是配置對象的子類。
- Spring是通過getProperty(name),而Jasypt重寫了這個方法,在調用獲取配置項值的過程中判斷值是否包含加密前后綴,然后進行解密返回
當然里面還包含了很多細節,如加密方式,對配置對象的代理,對配置項的緩存存儲等。
感謝
感謝大佬對源碼的解析