springcloud系列六 整合security

一 Eureka注册中心认证:

  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(); } } }

 

相关文章
相关标签/搜索