为 Eureka Server添加用户认证

版本信息:
springboot:2.1.0.RELEASE
springcloud:Greenwich.RELEASE

之前搭建的Eureka Server是允许匿名访问的,为了进一步加强安全设置,今天会对的Eureka Server进行改造,使其需要登录后才能访问。

第一步:在pom文件中添加spring-boot-starter-security依赖

<dependency>
   	<groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

第二步:在application.properties文件中添加以下配置:

spring.security.user.name=user
spring.security.user.password=password123

第三步:重启Eureka Server服务http://localhost:1111/login
在这里插入图片描述
此处输入配置文件中的 name 和 password 即可。

第四步:将微服务注册到需要认证的Eureka Server上
只需要修改Eureka客户端配置文件eureka.client.serviceUrl.defaultZone=http://user:password123@localhost:1111/eureka/

第五步:重启Eureka客户端。

然而出现下面的错误信息:

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
	at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:112) ~[eureka-client-1.9.2.jar:1.9.2]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.9.2.jar:1.9.2]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.9.2.jar:1.9.2]
	at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.9.2.jar:1.9.2]
	at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.9.2.jar:1.9.2]
	at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:829) ~[eureka-client-1.9.2.jar:1.9.2]
	at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:121) [eureka-client-1.9.2.jar:1.9.2]
	at com.netflix.discovery.InstanceInfoReplicator$1.run(InstanceInfoReplicator.java:101) [eureka-client-1.9.2.jar:1.9.2]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_201]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_201]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_201]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [na:1.8.0_201]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_201]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_201]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_201]

2019-08-05 16:57:21.749  WARN 18648 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator     : There was a problem with the instance info replicator

怎么办呢?开始寻找解决办法:因为新版本的security默认开启csrf了,关掉就好了,Eureka Server新建一个配置类

@EnableWebSecurity
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

  	@Override
	protected void configure(HttpSecurity http) throws Exception {
		http.csrf().disable(); // 关闭csrf
		http.authorizeRequests().anyRequest().authenticated().and().httpBasic(); // 开启认证
	}
}

再次重启Eureka Server和Eureka客户端,客户端注册成功。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当出现"Cannot execute request on any known server"或者"Connection refused"的错误时,通常是由于Eureka注册中心配置的问题导致的。 有两个常见的配置问题可能导致这个错误。首先,检查Eureka客户端的配置,确保`defaultZone`的值与Eureka服务器的地址一致。这个值应该是`http://localhost:9000/eureka`,确保URL的结尾是`/eureka`。 其次,检查Eureka服务器和客户端的安全认证配置。如果使用了安全认证,可以通过在`security`部分添加用户名和密码来实现密的服务注册请求。在Eureka服务器和客户端的`service-url:defaultZone`中配置`http://username:password@localhost:9000/eureka`。 如果以上配置都正确,但仍然出现错误,可能是由于其他原因导致的。可能是由于网络问题,客户端不能连接到Eureka服务器。可以尝试检查网络连接或者防火墙设置。 综上所述,当出现"Cannot execute request on any known server"或者"Connection refused"的错误时,可以通过检查Eureka客户端的`defaultZone`配置和安全认证配置以及网络连接来解决问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [SpringCloud报Cannot execute request on any known server或者Connection refused](https://blog.csdn.net/lastmoon52/article/details/90579089)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值