2014-05-02 5 views
5

Sto provando a fissare gli endpoint attuatore Spring Boot. Ho una protezione funzionante sull'interfaccia REST /api, ma non sembra funzionare la sicurezza degli endpoint incorporati.Impossibile assicurare gli endpoint degli attuatori di gestione di avvio Spring

Ho installato il raggruppamento dei punti finali nel mio application.properties:

management.context-path=/management 

ho questo nel mio 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); 
} 

Quando uso il mio browser per andare a nulla al di sotto /api, ho ottenere un 403 indietro come previsto. Quando si va a/management/info per esempio, vedo il JSON viene restituito in cui mi aspetterei anche un 403.

Ho anche provato ad aggiungere questo al mio file application.properties:

management.security.role=ADMIN 

Ma questo non ha aiutato neanche.

Gli spettacoli output di debug:

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/**'] 

E allora perché cerco il GET HTTP:

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 

risposta

2

Il registro che racconta la storia è: "/ gestione/info offre un elenco di filtri vuota "perché è esplicitamente contrassegnato come ignorato (/ le informazioni dovrebbero sempre essere disponibili). Provare uno degli altri endpoint dell'attuatore e vedere se si comportano come ci si aspetta. Se è davvero necessario proteggere l'endpoint delle informazioni, è possibile impostare endpoint.info.sensitive = true (credo).

+0

Completamente corretto! I 2 che ho provato sono '/ info' e'/health' ed entrambi sembrano essere sempre disponibili. Ad esempio, se utilizzo '/ beans', restituisco il 403 previsto. Puoi forse aggiungere queste informazioni [nei documenti] (http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#production-ready-sensitive-endpoints)? –

+0

È lì: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-sensitive-endpoints, http://docs.spring.io/spring-boot/docs/corrente/di riferimento/htmlsingle/# production-ready-endpoint. Se vuoi suggerire ulteriori chiarimenti, ti preghiamo di farlo. –

+0

Infatti, sembra che non abbia notato la colonna 'Sensitive' nella tabella. –

Problemi correlati