Трудности входа на сервер Spring Cloud Eureka - PullRequest
0 голосов
/ 16 декабря 2018

Я пытаюсь настроить простую систему с некоторыми микросервисами Spring Boot.Среди бизнес-систем есть шлюз, сервер обнаружения (Eureka) и сервер конфигурации (в данный момент они не готовы).Это первая топология обнаружения, в которой сервер Eureka также является клиентом сервера конфигурации, а сервер конфигурации регистрируется в Eureka.(Распределение / обработка сеанса Redis с сервера шлюза также на рисунке, но я думаю, что это не влияет на проблему, описанную ниже.)

Итак, сначала я запускаю сервер конфигурации, все выглядит правильно.Некоторые исключения, пока я не включу сервер Eureka, который успешно получает свою конфигурацию с сервера Config.Я знаю, что потому, что там определен пользовательский порт, который прослушивает сервер.

Я вижу это в журнале сервера de Eureka:

2018-12-15 20:51:03.381  INFO 3109 --- [nio-9002-exec-2] c.n.e.registry.AbstractInstanceRegistry  : Registered instance CONFIG-SERVER/192.168.0.9:config-server:9001 with status UP (replication=false)

Что выглядит хорошо, ноСервер конфигурации записывает это в журнал:

2018-12-15 20:51:03.401  INFO 3046 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_CONFIG-SERVER/192.168.0.9:config-server:9001 - registration status: 204

204 - НЕТ КОНТЕНТА.Это проблема, или это нормально?

Если вам нужно что-то еще от меня, чтобы ответить на этот вопрос, не стесняйтесь спрашивать, я обновляю этот пост с кодом и / или конфигурации.

ОБНОВЛЕНИЕ согласно запросу:

Config server application.yml:

server:
  port: 9001

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: file://${user.home}/application-config
          clone-on-start: true
  security:
    user:
      name: configUser
      password: configPassword

eureka:  
  client:
    serviceUrl:
      defaultZone: http://discUser:discPassword@localhost:9002/eureka/

Сервер обнаружения bootstrap.yml:

spring:
  application:
    name: discovery-server
  cloud:
    config:
      name: discovery-server
      uri: http://localhost:9001
      username: configUser
      password: configPassword

Сервер обнаружения Discovery-server.yml:

server:
  port: 9002

eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
     defaultZone: http://localhost:9002/eureka

spring:
  redis:
    host: localhost
    port: 6379

Конфигурация безопасности сервера обнаружения:

@Configuration
@EnableWebSecurity
@Order(1)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Bean
    public UserDetailsService userDetailsService() {
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        manager.createUser(User.withDefaultPasswordEncoder().username("discUser").   password("discPassword").roles("SYSTEM").build());
        return manager;
    }


    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
            .passwordEncoder(NoOpPasswordEncoder.getInstance())
            .withUser("discUser")
            .password("discPassword")
            .roles("SYSTEM");
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER).and()
        .csrf()
            .disable()
        .authorizeRequests()
            .anyRequest().authenticated()
        .and()
            .httpBasic();
    }

    @Configuration
    // no order tag means this is the last security filter to be evaluated
    public static class AdminSecurityConfig extends WebSecurityConfigurerAdapter {

        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests()
                    .antMatchers("/eureka/**")
                        .hasRole("USER")
                    .and()
                    .formLogin();
        }

        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            auth.inMemoryAuthentication()
                .passwordEncoder(NoOpPasswordEncoder.getInstance())
                .withUser("discUser")
                .password("discPassword")
                .roles("USER");
        }
    }
}
...