2016-04-15 14 views
4

Ich habe Spring Security auf meinem Klassenpfad (und verifiziert, dass ich für meine eigenen REST-Controller arbeite), aber meine Actuator-Endpunkte sind standardmäßig alle öffentlich verfügbar (außer /shutdown).Warum sind alle Endpunkte des Spring-Boot-Aktuators öffentlich verfügbar?

Ich kann Endpunkte wie ich bitte (nach dem Lesen durch this Frage) deaktivieren, aber aktiviert sind immer ohne Authentifizierung und ohne die Rolle von management.security.role in meinen Eigenschaften erforderlich.

Auch wenn ich zum Beispiel endpoints.beans.sensitive=true explizit setze, ist es immer noch ohne Authentifizierung zugänglich.

My Security-Konfiguration, die LDAP zur Authentifizierung verwendet:

@Configuration 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 
    @Autowired 
    private LdapContextSource contextSource; 

    @Override 
    protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
     auth 
       .ldapAuthentication() 
       .contextSource(contextSource) 
       .groupRoleAttribute("<hidden>") 
       .groupSearchBase("<hidden>") 
       .groupSearchFilter("<hidden>") 
       .userDnPatterns("<hidden>"); 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.httpBasic(); 
    } 
} 

Mein application.properties während dieses Tests:

# Log4J properties 
logging.file=${user.home}/nubis-log.log 
logging.level.org.springframework.web=INFO 
logging.level.org.hibernate=INFO 
logging.register-shutdown-hook=true 

# SSL configuration 
server.ssl.key-store=<hidden> 
server.ssl.key-store-password=<hidden> 
server.ssl.keyStoreType=<hidden> 
server.ssl.key-password=<hidden> 

# Spring actuator 
endpoints.enabled=false 
endpoints.info.enabled=true 
endpoints.health.enabled=true 
endpoints.beans.enabled=true 
endpoints.beans.sensitive=true 
management.security.role=ADMIN 

Meine Konsolenausgabe:

[2016-04-15 12:30:05.742] boot - 2754 INFO [localhost-startStop-1] --- DelegatingFilterProxyRegistrationBean: Mapping filter: 'springSecurityFilterChain' to: [/*] 
[2016-04-15 12:30:05.742] boot - 2754 INFO [localhost-startStop-1] --- FilterRegistrationBean: Mapping filter: 'webRequestLoggingFilter' to: [/*] 
[2016-04-15 12:30:05.743] boot - 2754 INFO [localhost-startStop-1] --- FilterRegistrationBean: Mapping filter: 'CORSFilter' to: [/*] 
[2016-04-15 12:30:05.743] boot - 2754 INFO [localhost-startStop-1] --- FilterRegistrationBean: Mapping filter: 'applicationContextIdFilter' to: [/*] 
[2016-04-15 12:30:05.743] boot - 2754 INFO [localhost-startStop-1] --- ServletRegistrationBean: Mapping servlet: 'dispatcherServlet' to [/] 
[2016-04-15 12:30:05.800] boot - 2754 DEBUG [localhost-startStop-1] --- DelegatingFilterProxy: Initializing filter 'springSecurityFilterChain' 
[2016-04-15 12:30:07.059] boot - 2754 INFO [localhost-startStop-1] --- EndpointHandlerMapping: Mapped "{[/info || /info.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke() 
[2016-04-15 12:30:07.061] boot - 2754 INFO [localhost-startStop-1] --- EndpointHandlerMapping: Mapped "{[/beans || /beans.json],methods=[GET],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.EndpointMvcAdapter.invoke() 
[2016-04-15 12:30:07.063] boot - 2754 INFO [localhost-startStop-1] --- EndpointHandlerMapping: Mapped "{[/health || /health.json],produces=[application/json]}" onto public java.lang.Object org.springframework.boot.actuate.endpoint.mvc.HealthMvcEndpoint.invoke(java.security.Principal) 

Könnte es sein, Konfiguration/Eigenschaft Blockierung Spring Security irgendwo? Muss ich etwas extra konfigurieren, damit es mit LDAP funktioniert?

+0

Sie wahrscheinlich sind Fehlkonfiguration Spring Security? Versuchen Sie 'http.authorizeRequests(). AnyRequest(). Authenticated(). Und(). FormLogin(). Und(). HttpBasic();'. http://docs.spring.io/spring-security/site/docs/current/reference/html/jc.html#jc-httpsecurity –

+0

@XtremeBiker Dies funktioniert, aber ich möchte nicht, dass alle Anfragen authentifiziert werden. Aus diesem Grund verwende ich '@ EnableGlobalMethodSecurity'. Oder verwende ich es falsch? – delucasvb

+2

Sie konfigurieren die Sicherheit selbst, daher hat die Sicherheitskonfiguration in der 'application.properties' keine Auswirkungen. Sie überschreiben es im Grunde selbst, und da Sie nichts geschützt haben, ist alles zugänglich. –

Antwort

-1

Alle Endpunkte haben eine empfindliche Eigenschaft, die für Aktoreigenschaften auf dieser Seite https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

Suche bei Apedenix A bis true

Blick eingestellt werden muss.

+0

Laut [dieser Seite] (http://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html) ist die Empfindlichkeit der meisten Endpunkte standardmäßig auf "true" gesetzt. – pacoverflow

+0

Zum Zeitpunkt der Veröffentlichung dieser Antwort war dies nicht der Fall. – ndrone

Verwandte Themen