Аутентификация с использованием Spring-Boot-Admin и Eureka discovery - PullRequest
0 голосов
/ 25 июня 2018

SBA версия 2.0.1

Spring-Cloud Finchley.RELEASE

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

Когда я нажимаю на один из экземпляров службы, меня просят ввести учетные данные.Я не уверен, какие учетные данные использовать, поэтому я использую учетные данные для сервисного привода.У меня уже есть эти учетные данные на карте метаданных, как показано в документации, но мне все равно предлагается ввести учетные данные.Это всегда приводит к отображению страницы ошибки Whitelabel с сообщением об ошибке, подобным этому:

Пн. 25 июня 12:40:57 CDT 2018 Произошла непредвиденная ошибка (тип = метод не разрешен, статус =405).Метод запроса 'POST' не поддерживается

Хотя я отмечаю, что URL-адрес этой ошибки, по-видимому, находится на самом экземпляре SBA, а не на удаленной службе.URL расшифровывается следующим образом: http://localhost:8080/#/instances/9207aa5fc06b/

Но я вижу это в журнале службы, поэтому, по-видимому, запрос на проверку подлинности поступает в службу удаления:

[2018-06-25 12: 16: 54.242] - ОТЛАДКА - [http-nio-8380-exec-7] [AUTHENTICATION_SERVICE_DEV, 8dc8165d4f77be7c, 8dc8165d4f77be7c, ложно] --- [nio-8380-exec-7] oswsmcessProhoho: Писатьотметка времени = пн 25 июня 12:16:54 CDT 2018, статус = 401, ошибка = неавторизовано, сообщение = неавторизовано, путь = / исполнительный механизм / здоровье}] как «application / vnd.spring-boot.actuator.v2 + json» с использованием[org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@30c8681]

И это в журнале SBA:

2018-06-25 12: 39: 40.884ОШИБКА [SERVICES_ADMIN_CONSOLE_LOCAL ,,,] 20728 --- [nio-8080-exec-8] oaccC [. [. [/]. [DispatcherServlet]: Servlet.service () для сервлета [dispatcherServlet] в контексте с путем [] throwисключение

java.io.IOException: установленное соединение было прервано программным обеспечениемВещи на вашем хост-компьютере

Это корень моей путаницы, я не уверен, какие учетные данные мне нужны или даже то, к чему я аутентифицируюсь.Я предоставил учетные данные удаленной службе в свойствах, а также в форме входа в систему, и она не работает.

Когда я нажимаю на приложение SBA в консоли SBA, оно работает, как и ожидалось.Так что, похоже, это связано с аутентификацией на удаленном приводе, но я не могу понять, в чем проблема.

Сервер:

@Configuration
@EnableAutoConfiguration
@EnableEurekaClient
@EnableAdminServer
public class ServiceAdmin {

    public static void main(String[] args) {
        SpringApplication.run(ServiceAdmin.class, args);
    }

    @Configuration
    public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests().anyRequest().permitAll()
                    .and().csrf().disable();
        }
    }
    }

SBA Config:

management.endpoints.web.exposure.include=*
management.endpoint.health.show-details=always
management.info.git.mode=full
management.endpoint.shutdown.enabled=true
spring.security.user.name=actuator
spring.security.user.password=password
spring.security.user.roles=ACTUATOR

eureka.instance.leaseRenewalIntervalInSeconds=10
eureka.instance.health-check-url-path=/actuator/health
eureka.instance.metadata-map.user.name=actuator
eureka.instance.metadata-map.user.password=password
eureka.client.registryFetchIntervalSeconds=5
eureka.client.serviceUrl.defaultZone=http://svcregistry1.mycompany.com/eureka/,http://svcregistry2.mycompany.com

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Для любого, кто придет к этому вопросу, будучи озадаченным, как я, чтобы прояснить этот ответ.

У меня есть сервер / пользовательский интерфейс Eureka и Springboot в одном приложении

ВсеСлужбам, которые будут регистрироваться в администраторе eureka AND springboot, потребуются свои собственные учетные данные / данные исполнительного механизма, представленные в виде метаданных:

eureka.instance.metadata-map.user.name = ${endpoints.user.name} 
eureka.instance.metadata-map.user.password = ${endpoints.user.password}

В этом посте прояснены некоторые вещи.https://zoltanaltfatter.com/2018/05/15/spring-cloud-discovery-with-spring-boot-admin/

0 голосов
/ 26 июня 2018

Проблема была в том, что я не смог понять документы.Учетные данные eureka в metadataMap должны предоставляться отслеживаемым приложением во время регистрации.Не указано в конфигурации SBA.

...