资讯专栏INFORMATION COLUMN

落地 Spring Could 所踩过的坑(一)eureka开启验证后无法连接注册中心

Thanatos / 538人阅读

摘要:问题描述今天遇到个问题,的端和端本来已经联通成功,服务注册发现都正常。后来开启了验证功能,端向端注册服务时,需要验证用户名和密码,问题就出现了。

问题描述

今天遇到个问题,Eureka的Server端和Client端本来已经联通成功,服务注册、发现都正常。后来开启了验证功能,Client端向Server端注册服务时,需要验证用户名和密码,问题就出现了。

Client端无法向Server端注册服务,查看日志发现
ERROR 11612 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient    : *****:***** - was unable to send heartbeat!

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.0.jar:1.9.0]
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89) ~[eureka-client-1.9.0.jar:1.9.0]
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute(EurekaHttpClientDecorator.java:92) ~[eureka-client-1.9.0.jar:1.9.0]
at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.9.0.jar:1.9.0]
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat(EurekaHttpClientDecorator.java:89) ~[eureka-client-1.9.0.jar:1.9.0]
at com.netflix.discovery.DiscoveryClient.renew(DiscoveryClient.java:846) ~[eureka-client-1.9.0.jar:1.9.0]
at com.netflix.discovery.DiscoveryClient$HeartbeatThread.run(DiscoveryClient.java:1399) [eureka-client-1.9.0.jar:1.9.0]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_31]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_31]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_31]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_31]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_31]
原因分析

查资料了解到新版(Spring Cloud 2.0 以上)的security默认启用了csrf检验,要在eurekaServer端配置security的csrf检验为false

解决步骤

在 Eureka Server 项目中,增加存放配置的专用包目录;

添加一个继承 WebSecurityConfigurerAdapter 的类;

在类上添加 @EnableWebSecurity 注解;

覆盖父类的 configure(HttpSecurity http) 方法,关闭掉 csrf,至此大工告成。

示例代码
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable();
        super.configure(http);
    }
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71236.html

相关文章

  • 落地 Spring Could 所踩的坑(二)Feign Client 调用服务接口报错

    摘要:问题描述为了方便统一管理服务接口调用,服务调用客户端采用,实施下来一直很顺利。负责测试的同事反馈其中一个接口调用报错,诡异的事只有这一个接口报错。示例代码区域信息模型添加时间最后修改时间其中是预先定义的常量,值为 问题描述 为了方便统一管理服务接口调用,服务调用 HTTP 客户端采用Feign Client,实施下来一直很顺利。负责测试的同事反馈其中一个接口调用报错:Could not...

    godlong_X 评论0 收藏0
  • Spring Cloud 升级最新 Finchley 版本,踩了所有的坑

    摘要:因为默认开启了所有攻击防御,需要禁用的防御。版本变化有点大,本次已成功升级了基础依赖,及注册中心配置中心。其他像代替了及其他组件再慢慢升级,的快速发展令升级变得非常蛋疼,本文记录了升级过程中踩过的所有的坑。。。 Spring Boot 2.x 已经发布了很久,现在 Spring Cloud 也发布了 基于 Spring Boot 2.x 的 Finchley 版本,现在一起为项目做一次...

    WelliJhon 评论0 收藏0
  • Spring Cloud 微服务与 Service Mesh 的融合

    摘要:并不会在微服务框架中有其它的注册机制。微服务框架本身不会维护服务组件的启动顺序,这一问题可以由来解决。启动先后逻辑为被依赖的服务先启动,只有当前服务所依赖的服务全部正常启动后,才会开始启动流程。 概述 这篇文档,着重解决一个问题:Spring Cloud 融合于 Rainbond 原生 Service Mesh 的正确姿势是什么样子的。 Rainbond 原生支持 Service Me...

    fyber 评论0 收藏0
  • SpringCloud组件: GateWay整合Eureka转发服务请求

    摘要:单服务我们简单编写一个请求地址,输出字符串信息,添加依赖如下所示配置文件如下所示服务名注册到服务端口号配置该服务的服务名称为,这里对应的。 在上一篇文章Spring Cloud GateWay 路由转发规则介绍中我们讲解了SpringCloud Gateway内部提供的断言、谓语,让我们可以组合更精确的业务场景进行请求,既然SpringCloud GateWay担任了网关的角色,在之前...

    warmcheng 评论0 收藏0
  • Spring Cloud 注册中心高可用搭建

    摘要:配置应用名称,在注册中心中显示的服务注册名称。配置为为喜欢,即连接注册中心使用地址形式,也可以使用,但生产环境不推荐。配置注册中心清理无效节点的时间间隔,默认毫秒,即秒。 Spring Cloud的注册中心可以由Eureka、Consul、Zookeeper、ETCD等来实现,这里推荐使用Spring Cloud Eureka来实现注册中心,它基于Netfilix的Eureka做了二次...

    wthee 评论0 收藏0

发表评论

0条评论

Thanatos

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<