2014-05-02 9 views
5

Ich versuche, die Frühlings-Boot-actuactor Endpunkte sichern zu sichern. Ich habe Arbeitssicherheit auf meiner REST-Schnittstelle /api, aber die Sicherheit auf den integrierten Endpunkten hinzufügen scheint nicht zu funktionieren.Unable Frühling Bootmanagement Aktor Endpunkte

management.context-path=/management 

Ich habe dies in meinem Java Config

@Override 
protected void configure(HttpSecurity http) throws Exception 
{ 
    http.csrf().disable(); 
    http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); 

    http.authorizeRequests() 
     .antMatchers("/api/**").hasRole("READONLY") 
     .antMatchers("/management/**").hasRole("ADMIN"); 


    SecurityConfigurer<DefaultSecurityFilterChain, HttpSecurity> securityConfigurer = new XAuthTokenConfigurer(userDetailsServiceBean()); 
    http.apply(securityConfigurer); 
} 

Wenn ich meinen Browser etwas unterhalb /api, ich zu gehen:

Ich habe bei der Gruppierung der Endpunkte meines application.properties einrichten Holen Sie sich 403 zurück, wie erwartet. Wann/management/info zum Beispiel gehen, sehe ich die JSON zurückgegeben werden, wo ich auch ein 403.

erwarten würde ich auch versucht, diese zu meine application.properties Datei:

management.security.role=ADMIN 

Aber das auch nicht geholfen hat.

Die DEBUG Ausgabe zeigt:

2014-05-02 10:15:30 DEBUG [localhost-startStop-1] ExpressionBasedFilterInvocationSecurityMetadataSource - 
Adding web access control expression 'hasRole('ROLE_READONLY')', for Ant [pattern='/api/**'] 

2014-05-02 10:15:30 DEBUG [localhost-startStop-1] ExpressionBasedFilterInvocationSecurityMetadataSource - 
Adding web access control expression 'hasRole('ROLE_ADMIN')', for Ant [pattern='/management/**'] 

Und warum dann versuche ich die HTTP-GET:

2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/css/**' 
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/js/**' 
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/images/**' 
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/**/favicon.ico' 
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/management/info' 
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] FilterChainProxy - /management/info has an empty filter list 

Antwort

2

Das Protokoll, das die Geschichte erzählt ist: „/ Management/info eine leere Filter-Liste "weil es explizit als ignoriert markiert ist (/ info soll immer verfügbar sein). Probieren Sie einen der anderen Stellgliedendpunkte aus und sehen Sie, ob sich diese wie erwartet verhalten. Wenn Sie wirklich den Info-Endpunkt sichern müssen, können Sie endpoints.info.sensitive = true setzen (denke ich).

+0

Völlig richtig! Die 2, die ich ausprobiert habe, sind '/ info' und'/health' und beide scheinen immer verfügbar zu sein. Wenn ich zum Beispiel "/ beans" verwende, bekomme ich die erwarteten 403 zurück. Sie können vielleicht diese Informationen hinzufügen [im docs] (http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#production-ready-sensitive-endpoints)? –

+0

Es ist da: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-sensitive-endpoints, http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/# produktionsfertige Endpunkte. Wenn Sie weitere Erläuterungen vorschlagen möchten, tun Sie dies bitte. –

+0

Tatsächlich scheint ich die Spalte "Sensitiv" in der Tabelle nicht bemerkt zu haben. –