基于springboot2 版本的 springcloud 注册中心开启安全验证,服务端如何注册服务

在使用 Eureka Server 作为微服务的注册中心后,发现注册过程中存在一个风险问题,如果我们的注册中心地址一不小心被暴露,那岂不是通过Eureka协议创建的任意服务都可以进行注册到该Eureka Server吗,如果不想让所有人都能访问到eureka的界面,可以加上权限认证,输入账号密码才能访问。

首先我们在注册中心,加入安全认证所需的依赖,如图



	4.0.0
	
		org.springframework.boot
		spring-boot-starter-parent
		2.1.3.RELEASE
		 
	
	com.hqk
	eurekaserver
	0.0.1-SNAPSHOT
	eurekaserver
	Demo project for Spring Boot

	
		1.8
		Greenwich.SR1
	

	
		
			org.springframework.cloud
			spring-cloud-starter-netflix-eureka-server
		

		
			org.springframework.boot
			spring-boot-starter-test
			test
		

		
		
			org.springframework.boot
			spring-boot-starter-security
		

	

	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				${spring-cloud.version}
				pom
				import
			
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	


然后,我们在xml配置文件中,配置用户名密码,如果不配置,账户默认user,密码启动的时候会输出在控制台

server.port=8080
#服务名称
#server.servlet.context-path=/api-center/
#表示是否将自己注册到Eureka Server
eureka.client.register-with-eureka=false
#表示是否从Eureka Server获取注册信息
eureka.client.fetch-registry=false
#设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔
eureka.client.service-url.defaultZone=http://localhost:8080/eureka/
        
#驱逐下线的服务,间隔,5秒,默认是60,建议开发和测试环境配置
#org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean.evictionIntervalTimerInMs
eureka.server.evictionIntervalTimerInMs=5000

#安全认证
spring.security.user.name=admin
spring.security.user.password=admin

然后我们禁用 csrf 攻击功能,新建一个类,继承 WebSecurityConfigurerAdapter

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

        //禁用csrf攻击功能 
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            
            http.csrf().disable().httpBasic();
        }

}

下面我们来看注册中心启动的界面,需要用户名 密码验证

基于springboot2 版本的 springcloud 注册中心开启安全验证,服务端如何注册服务_第1张图片

注册中心已经改造完成,那么注册到服务中心的服务呢,我们只需在原来的 url中加上用户名密码即可

格式:http://用户名:密码@ip:端口

eureka.client.serviceUrl.defaultZone=http://admin:admin@localhost:8080/eureka/

这样服务就可以注册进来了,如图

基于springboot2 版本的 springcloud 注册中心开启安全验证,服务端如何注册服务_第2张图片

 

你可能感兴趣的:(springcloud)