Сервер администрирования Spring Boot не может получить доступ к конечным точкам (Unauthorized 401) - PullRequest
1 голос
/ 11 октября 2019

Я настроил свою собственную конфигурацию аутентификации в памяти, и мое приложение может зарегистрироваться на Spring Boot Admin Server, и сервер получит правильные учетные данные, но все равно получит неавторизованный ответ от моего приложения. Если я введу учетные данные в своем браузере, он будет работать.

@Configuration
@Order(2)
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {
  @Value("${spring.boot.admin.client.instance.metadata.user.name:actuator}")
  private String actuatorName;
  @Value("${spring.boot.admin.client.instance.metadata.user.password:secret}")
  private String actuatorPassword;

  @Override
  protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication().withUser(actuatorName).password("{noop}" + actuatorPassword).authorities("ACTUATOR");
  }

  @Override
  public void configure(HttpSecurity http) throws Exception {
    http
            .antMatcher("/actuator/**")
            .authorizeRequests()
            .anyRequest().hasAuthority("ACTUATOR")
            .and()
            .httpBasic();
  }
}

spring-boot-admin-dashboard

Разница между запросом браузера, который работает, и Spring-Boot-Admin запрос, который приводит к 401, заключается в том, что «BasicAuthenticationFilter» получает заголовок при попытке brwoser, но при попытке Spring-Boot-Admin «BasicAuthenticationFilter» не читает какой-либо заголовок и приводит к анонимному пользователю. Есть идеи?

1 Ответ

0 голосов
/ 01 ноября 2019

У меня была похожая проблема, и она была решена с использованием приведенного ниже примера (из документации).

@Bean
public HttpHeadersProvider customHttpHeadersProvider() {
    return  instance -> {
        HttpHeaders httpHeaders = new HttpHeaders();
        httpHeaders.add("Authorization", "My Custom Value");
        return httpHeaders;
    };
}

В случае, если вам нужно внедрить пользовательские заголовки HTTP в запросы, сделанные к отслеживаемому приложениюконечные точки привода вы можете легко добавить HttpHeadersProvider

Ссылка: Ввод пользовательских заголовков HTTP

...