Eureka自带了一个管理界面,若是不加密,全部人均可以进行访问这个地址,这样安全问题就来了,因此须要对其进行加密认证:web
那么该如何进行整合呢:spring
1 在注册中心模块添加依赖:浏览器
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
2 yml文件配置:安全
spring: security: user: name: admin password: admin
3 启动服务再次登陆尝试:ide
以前是谷歌登陆,因此换了一个浏览器,须要再登陆,spring-boot
再次启动注册模块,就出现一堆错误:微服务
那么这个问题怎么解决呢:ui
eureka: client: serviceUrl: defaultZone: http://admin:admin@127.0.0.1:8761/eureka/ #eureka注册中心地址
在注册服务上加上这个,名字,密码就能够了吗?加密
再启动仍是报一堆错误,服务根本注册不进去:spa
能够看到报错信息:
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
百度查询:
可是好像并无解决啊:
开启认证了,可是没有禁用CSRF
新版本的spring-cloud2.0中: Spring Security默认开启了CSRF攻击防护
CSRF会将微服务的注册也给过滤了,虽然不会影响注册中心,可是其余客户端是注册不了的
解决方案:
关闭csrf攻击:
package com.cxy.config; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity; /*** * @ClassName: WebSecurityConfig * @Description: * @Auther: 陈绪友 * @Date: 2019/1/2820:34 * @version : V1.0 */ @Configuration public class WebSecurityConfig { @EnableWebSecurity public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().anyRequest().authenticated().and().httpBasic().and().csrf().disable(); } } }