Jasypt安全框架提供了Spring的集成,主要是实现
PlaceholderConfigurerSupport类或者其子类。
在Sring 3.1之后,则推荐使用PropertySourcesPlaceholderConfigurer类作为属性替换配置类,这里Spring集成Jasypt则使用Jasypt对属性替换配置类的实现。EncryptablePropertySourcesPlaceholderConfigurer。
在Spring中集成比较容易,而且Jasypt官方也给出了配置Bean的方式和使用Jasypt标签的XML方式,而Spring boot集成就稍微有点不一样,需要创建一个自动配置类,并且创建一个注入PlaceholderConfigurerSupport的jasypt实现了的Bean .
下面是一个使用示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
import
org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
import
org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import
org.jasypt.spring31.properties.EncryptablePropertySourcesPlaceholderConfigurer;
import
org.springframework.boot.autoconfigure.AutoConfigureOrder;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import
org.springframework.boot.autoconfigure.condition.SearchStrategy;
import
org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration;
import
org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import
org.springframework.core.Ordered;
import
org.springframework.core.io.ClassPathResource;
/**
* Author : secondriver
* Date : 2016/5/26
*/
@Configuration
@AutoConfigureOrder
(Ordered.HIGHEST_PRECEDENCE)
public
class
EncryptPropertyPlaceholderAutoConfiguration {
private
static
final
String SECURITY_PROPERTIES_FILE =
"security.properties"
;
@Bean
@ConditionalOnMissingBean
(search = SearchStrategy.CURRENT)
public
static
PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
StandardPBEStringEncryptor encryptor =
new
StandardPBEStringEncryptor();
encryptor.setAlgorithm(StandardPBEByteEncryptor.DEFAULT_ALGORITHM);
encryptor.setPassword(
"security"
);
EncryptablePropertySourcesPlaceholderConfigurer
configurer =
new
EncryptablePropertySourcesPlaceholderConfigurer(encryptor);
configurer.setLocation(
new
ClassPathResource(SECURITY_PROPERTIES_FILE));
return
configurer;
}
}
|
配置文件的写入和Spring XML的基本类似。application.yml相当于applicationContext.xml,security.properties就是要进行属性替换的配置文件。
application.yml:
1
2
3
4
5
|
spring:
datasource:
url: jdbc:mysql:
/
/
localhost:
3306
/
abc?useSSL
=
false
username: root
password: ${jdbc.password}
|
security.properties:
1
|
jdbc.password=ENC(jWgGELCkuxRuCI2Aqa6cF9VCxYpuKEZr)
|
创建数据源的时候在使用属性参数时,会对ENC()中的内容进行解密,达到认证成功,创建数据源完成。
本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1784180,如需转载请自行联系原作者