springcloud搭建Eureka时,为了安全考虑,添加认证信息
导入依赖:
<!-- 添加注册中心权限依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
application.yml 中添加如下信息:
security: basic: enable: true #开启基于HTTP basic的认证 user: #配置用户的账号信息 name: admin password: admin123
结果报如下错误:
Inspection info: Checks Spring Boot application .yaml configuration files. Highlights unresolved and deprecated configuration keys and invalid values.
网上查找后才知道spring2.0以后的新版本开启权限方式变成如下:
spring: security: user: name: admin password: admin123
运行报错:
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
服务端添加代码:
- 添加一个继承 WebSecurityConfigurerAdapter 的类
- 在类上添加 @EnableWebSecurity 注解;
- 覆盖父类的 configure(HttpSecurity http) 方法,关闭掉 csrf
/** * eureka开启验证后无法连接注册中心? * spring Cloud 2.0 以上)的security默认启用了csrf检验,要在eurekaServer端配置security的csrf检验为false */ @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter{ @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().disable(); super.configure(http); } }
客户端配置文件:
eureka: client: registerWithEureka: true #是否将自己注册到Eureka服务中,默认为true fetchRegistry: true #是否从Eureka中获取注册信息,默认为true serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址 defaultZone: http://admin:admin123@127.0.0.1:6868/eureka/ instance: prefer-ip-address: true #将自己的ip地址注册到Eureka服务中