1.项目结构
在SpringCloud服务中为了提高注册中心的安全性我们可以整合springsecurity来实现完全认证。
Eureka服务中心做的高可用的配置
provide提供服务,需要到注册中心注册(需要认证)
consumer服务消费者,需要从注册中心中发现服务,同样需要认证
2.服务注册中心配置
2.1.添加Spring Security依赖
因为是在SpringBoot项目中,所以添加了Security的依赖会帮助我们完成自动配置。非常方便
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2.2.修改配置文件
设置特定的账号密码,放开安全认证
#开启 http basic 的安全认证
security.basic.enabled=true
security.user.name=bruceliu
security.user.password=123456
注册中心相互之间也需要认证,设置账号密码
defaultZone: http://bruceliu:123456@eureka7002.com:7002/eureka,http://bruceliu:123456@eureka7003.com:7003/eureka
或者引用变量:
defaultZone: http://${spring.security.user.name}:${spring.security.user.password}@eureka7002.com:7002/eureka,http://${spring.security.user.name}:${spring.security.user.password}@eureka7003.com:7003/eureka
2.3.注册中心关闭Spring Security的CSRF验证
package com.bruceliu;
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;
/**
* @BelongsProject: springcloud0310
* @BelongsPackage: com.bruceliu
* @Author: bruceliu
* @QQ:1241488705
* @CreateTime: 2020-03-10 19:48
* @Description: TODO
*/
@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http.csrf().disable(); // 关闭csrf
http.authorizeRequests().anyRequest().authenticated().and().httpBasic(); // 开启认证
}
}
如果不关闭,那么客户端就连接不上.
2.部署启动
重新将项目打包部署,然后访问注册中心,会提示输入账号密码
输入: bruceliu123456 就能进入了。
3.服务提供者配置
3.1.修改配置文件
因为现在注册中心需要认证,所以我们在注册的地址后需要添加对应的账号信息,如下:
defaultZone: http://bruceliu:123456@eureka7002.com:7002/eureka,http://bruceliu:123456@eureka7003.com:7003/eureka
3.2.启动程序
启动程序,注册并提供服务,观察注册中心
4.消费者配置
4.1.修改配置文件
因为现在注册中心需要认证,所以我们在注册的地址后需要添加对应的账号信息,如下:
defaultZone: http://bruceliu:123456@eureka7002.com:7002/eureka,http://bruceliu:123456@eureka7003.com:7003/eureka