Spring-Boot-Antrieb die Gesundheit Endpunkt nicht erreichbar, nach dem Upgrade auf Boot-1.2

Ich habe Probleme beim Upgrade von Spring Boot vom 1.1.12 bis 1.2.5, aber habe das gleiche Problem in allen Versionen von 1.2.x. Die /health Endpunkt zur Verfügung gestellt von Aktor ist nun die Rückkehr 401 Unauthorized zu einer integration test, der verwendet wird, um zu arbeiten. Kein code geändert hat, während die Aktualisierung der Abhängigkeit.

Hier ist der test-Fall:

@Test
public void testNoUserForStatusEndpoint() throws Exception {
    HttpEntity<String> entity = new HttpEntity<>(null, headers);
    ResponseEntity<String> response = template
            .exchange(base + "/health", HttpMethod.GET, entity, String.class);
    assertEquals(HttpStatus.OK, response.getStatusCode());
    assertEquals("{\"status\":\"UP\"}", response.getBody());
}

Ich erwarte, um zu sehen, die grundlegende "UP" status, aber keine weiteren details, wie der Benutzer ist anonym und nicht authentifiziert.

Einstellung management.security.enabled=false in der Anwendung.Eigenschaften bewirkt, dass der Endpunkt zur Rückgabe der vollständigen information über die Gesundheit. Dies ist nicht wünschenswert.

Einstellung endpoints.health.sensitive=false nichts.

Die Sicherheits-Konfiguration hat sich nicht geändert. Es basiert auf Apache Kündigung und eine Bescheinigung whitelist, die auch nicht geändert hat.

@Override
public void configure(HttpSecurity http) throws Exception {
    http.csrf().disable();
    http.addFilterBefore(new CustomAuthenticationFilter(authenticationManager(), Environment.getUserWhitelist()), BasicAuthenticationFilter.class);
}

Wie kann ich das test-Abo?

Updates:

Ursprünglich die einzige relevante Einstellung in application.properties definiert wurde, ist endpoints.health.enabled=true.

Hinzufügen management.health.status.order=UP,DOWN,OUT_OF_SERVICE,UNKNOWN zu application.properties macht keinen Unterschied.

Mit allen drei Eigenschaften die Ergebnisse in einem 401 (funktioniert nicht):

endpoints.health.enabled=true
endpoints.health.sensitive=false
management.health.status.order=UP,DOWN,OUT_OF_SERVICE,UNKNOWN

Main-Klasse ist nur eine abgespeckte Spring-Boot-Anwendung launcher:

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Habe ich versucht, indem http.authorizeRequests().antMatchers("/health**").permitAll(); auf die erste Zeile des Sicherheitskonfigurations-Methode (siehe oben). Es nicht einen Unterschied machen.

Nach Spring Boot Problem 2120, Die endpoints.health.sensitive - Eigenschaft wird ignoriert, wenn die benutzerdefinierte Sicherheit. Ich fand es keine Erwähnung von diesem in der Dokumentation.

  • Ähnlich wie diese Frage, aber die Sicherheits-details sind anders.
InformationsquelleAutor IanGilham | 2015-09-17
Schreibe einen Kommentar