Проблема аутентификации Spring Cloud Config - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь настроить Spring Cloud Config для одного из моих проектов. Раньше он работал довольно хорошо. Однако с последней версией Spring у меня возникают проблемы, когда я пытаюсь включить аутентификацию. Это журнал, который я вижу.

INFO  Fetching config from server at : http://localhost:8888
WARN  Could not locate PropertySource: Could not extract response: no suitable HttpMessageConverter found for response type [class org.springframework.cloud.config.environment.Environment] and content type [text/html;charset=UTF-8]
INFO  The following profiles are active: development

Кто-нибудь сталкивался с этой проблемой? Без аутентификации spring-cloud-config-client работает хорошо, но при включенной аутентификации basi c тот же код не работает.

Приложение Spring Cloud Config Server application.properties:

spring.application.name=my-config
server.port=8888
spring.cloud.config.server.git.uri=file:///repo/my-config
spring.security.user.name=root
spring.security.user.password=root

Клиент конфигурации Spring Cloud Bootstrap .yml:

spring.application.name=my-service
spring.profiles.active=development
spring.cloud.config.uri=http://localhost:8888
management.endpoints.web.exposure.include=*
spring.cloud.config.username=root
spring.cloud.config.password=root

И мой сервер конфигурации, и проекты служб используют одно и то же свойство версии для Spring Boot и Spring Cloud

<spring-boot.version>2.2.2.RELEASE</spring-boot.version>
<spring-cloud-config.version>2.2.0.RELEASE</spring-cloud-config.version>

====== Дополнительная информация ======

Каким-то образом проект my-service не обнаружил spring.profiles.active = конфигурацию разработки, которую я указывал по моим bootstrap .свойствам. Я подтвердил это, пытаясь вывести эту конфигурацию в моем коде.

@Value("${spring.profiles.active}")
private String activeProfile;

logger.info("Active Profile: " + activeProfile);

Странно, но вывод логгера был пустым, что означало отсутствие активного профиля. Итак, ясно, что эта конфигурация bootstrap .properties игнорируется. Чтобы обойти это, я добавил этот аргумент JVM при загрузке my-service.

-Dspring.profiles.active=development -Dspring.application.name=my-service

Это эффективно устранило проблему с обнаружением профиля. Однако я до сих пор не понимаю, почему в моих bootstrap .properties игнорируется конфигурация spring.profiles.active = развития.

1 Ответ

0 голосов
/ 11 марта 2020

Вам необходимо предоставить профиль native в приложении "config-server", тогда как профиль development оставить клиентам. Ниже приведены настройки конфигурации:

config-server

  1. bootstrap .yml

    server:
      port: 9001
      servlet.context-path: /my-config-server
    
    spring:
      application.name: my-config-server
      profiles:
        active: native
      main:
        banner-mode: "OFF"
      cloud:
        config:
          uri: http://localhost:9001/my-config-server
          fail-fast: true
          username: root
          password: root
    
  2. application.yml:

    spring:
      profiles: native
      cloud:
        config:
          server:
            native:
              searchLocations: file:<path-to-files>
              git:
                clone-on-start: false # Only clone(true) on-demand
    

Config-Client

  1. bootstrap .yml

    spring:
      application.name: user-api
      profiles:
        active: development
      main:
        #banner-mode: "OFF"
      cloud:
        config:
          uri: http://localhost:9001/my-config-server
          fail-fast: true 
          username: root
          password: root
    
...