Feign支持BasicAuth验证
# Feign支持BasicAuth验证
# 一、背景
一些比较重要的微服务,我们暴露的接口可能会希望安全性更高一些,此时,我们会给这些接口增加一些鉴权,如比较简单且方便的鉴权方式Basic Auth鉴权,此时,针对这些有Basic Auth鉴权的接口,我们该如何写Feign,其实是通过覆盖Feign的默认配置来支持鉴权。
# 二、 步骤
FeignClient的属性configuration
增加自定义配置HeadingConfiguration.class
@FeignClient(name = "heading-server", configuration = HeadingConfiguration.class)
public interface HeadingClient {
//..
}
1
2
3
4
2
3
4
HeadingConfiguration.class
如下(特别注意,别加@Configuration注解,避免扫包扫到导致给全局的Feign都增加了BasicAuthRequestInterceptor拦截器):
import feign.auth.BasicAuthRequestInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* basic验证配置
*/
@EnableConfigurationProperties({HeaDingProperties.class})
public class HeadingConfiguration {
@Autowired
private HeaDingProperties properties;
public HeadingConfiguration() {
}
@Bean
public BasicAuthRequestInterceptor basicAuthRequestInterceptor() {
return new BasicAuthRequestInterceptor(properties.getUsername(), properties.getPassword());
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
其中HeaDingProperties.java
为
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* basic验证配置
*/
@ConfigurationProperties(prefix = "heading")
@Data
public class HeaDingProperties {
private String username;
private String password;
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
application.yaml
增加basic auth账号密码配置如下:
heading:
username: test
password: 123456
1
2
3
2
3
上次更新: 2022/06/13, 18:30:58