使用Spring Security注册到Eureka Server时的一些问题

时间:2019-05-11 11:38:03

标签: spring-boot spring-cloud netflix-eureka spring-cloud-netflix

我无法使用Spring Security向Eureka Server注册微服务。

我在互联网上尝试了几乎所有解决方案。但是我还没有解决。

Spring Boot版本:2.1.3.RELEASE
Spring Cloud:Greenwich.RELEASE

这是我对Eureka服务器的配置:

spring:
  application:
    name: registration-center
  security:
    user:
      name: eureka
      password: 123456
server:
  port: 8761
eureka:
  instance:
    hostname: localhost
  client:
    fetch-registry: false
    register-with-eureka: false
    service-url:
      default-zone: http://eureka:123456@${eureka.instance.hostname}:${server.port}/eureka/
  server:
    enable-self-preservation: false

这是Eureka Client的配置:

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
      - id: route_service_user
        uri: lb://SERVICE-USER
        predicates:
        - Path=/user/**
  application:
    name: gateway-client
server:
  port: 8901
eureka:
  client:
    servers-url:
      default-zone: http://eureka:123456@localhost:8761/eureka
    register-with-eureka: true
    fetch-registry: true
  instance:
    prefer-ip-address: true
    hostname: localhost

我使用Spring Security依赖项,并且无法将任何Eureka客户端注册到Eureka服务器。例外:

2019-05-11 20:01:07.454  WARN 3864 --- [nfoReplicator-0] c.n.discovery.InstanceInfoReplicator     : There was a problem with the instance info replicator

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.8.jar:1.9.8]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.9.8.jar:1.9.8]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.9.8.jar:1.9.8]
    at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.9.8.jar:1.9.8]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.9.8.jar:1.9.8]
    at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:829) ~[eureka-client-1.9.8.jar:1.9.8]
    at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:121) ~[eureka-client-1.9.8.jar:1.9.8]
    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]

我还在WebSecurityConfig类中禁用了csrf:

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable()
                .authorizeRequests()
                .antMatchers("/actuator/**").permitAll()
                .anyRequest()
                .authenticated()
                .and().httpBasic();
    }
}

所有这些都不起作用。

但是,如果我删除了Spring Security Dependency,它将成功。

在我的配置中一定有问题,但我无法弄清楚。

您能帮我解决这个问题吗?

非常感谢您!

0 个答案:

没有答案