2015-12-21 16 views
6

Ho provato disabilitando tutti gli endpoint di attuatori per ambiente di produzione nel file di configurazione application.yml:Primavera Boot attuatore - Non è possibile disabilitare/info endpoint

endpoints.enabled: false 

Funziona per tutti gli endpoint ad eccezione di/info. Come posso disattivare tutti gli endpoint per un determinato ambiente?

UPDATE:

progetto cui sto lavorando agisce anche come client Eureka. Nella documentazione per Spring Cloud Netflix nella sezione Indicatore di stato e salute() si dice che "istanza Eureka predefinita su"/info "e"/health "rispettivamente".

Esiste una soluzione per disabilitare tali endpoint?

sono stato in grado di disattivare /salute endpoint con endpoints.enabled: false, ma non il /info endpoint.

+0

Fissaggio del punto finale può essere l'unica opzione. Disabilitare in produzione sembra una scelta strana dato che stai disattivando la possibilità di usare l'attuatore. – code

+0

Sono stato in grado di proteggere/info endpoint con una configurazione di sicurezza Web aggiuntiva (che funziona accanto alla conf di sicurezza predefinita dell'attuatore). Quello che non mi piace è che tutti gli endpoint dell'attuatore eccetto _/info_ possono essere protetti dalla configurazione dell'attuatore, ad esempio 'management.security.enabled: true'. Tuttavia, al fine di proteggere l'endpoint _/info_, è necessario creare una configurazione di sicurezza Web separata solo per questo endpoint. Sembra che sto facendo un po 'di hacking nel codice. – Sasa

risposta

10

Finalmente sono riuscito a risolvere il mio problema. ho attivato solo/informazioni e/endpoint di salute in attuatore. e per consentire l'accesso a/informazioni endpoint solo agli utenti con ruolo di amministratore mi serviva per mescolare la sicurezza gestione attuatore e configurazione della sicurezza a molla.

Quindi il mio application.yml si presenta così:

endpoints.enabled: false 

endpoints: 
    info.enabled: true 
    health.enabled: true 

management.security.role: ADMIN 

E la primavera configurazione di sicurezza di questo tipo (in cui avevo bisogno di cambiare l'ordine di ManagementSecurityConfig avere priorità più alta):

@Configuration 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
public class SecurityConfiguration { 


    @Configuration 
    protected static class AuthenticationSecurity extends GlobalAuthenticationConfigurerAdapter { 

     @Autowired 
     private AuthenticationProvider authenticationProvider; 

     public AuthenticationSecurity() { 
      super(); 
     } 

     @Override 
     public void init(AuthenticationManagerBuilder auth) throws Exception { 
      auth.inMemoryAuthentication().withUser("admin").password("secret").roles("ADMIN"); 
     } 
    } 

    @Configuration 
    @Order(Ordered.HIGHEST_PRECEDENCE + 2) 
    public static class ManagementSecurityConfig extends WebSecurityConfigurerAdapter { 


     @Override 
     protected void configure(HttpSecurity http) throws Exception { 
      http.csrf().disable() 
        .requestMatchers() 
        .antMatchers("/info/**") 
        .and() 
        .authorizeRequests() 
        .anyRequest().hasRole("ADMIN") 
        .and() 
        .httpBasic(); 
     } 
    } 

    @Configuration 
    public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter { 

     protected void configure(HttpSecurity http) throws Exception { 
      // API security configuration 
     } 

    } 
} 
0

La configurazione di esempio mi sembra sospetta. Credo che si intende

endpoints: 
    enabled: true 

In ogni caso, ho solo cercato di aggiungere questo ad un'applicazione di vaniglia Primavera Boot (utilizzando 1.3.1 e tutti gli endpoint sono stati disattivati ​​(come previsto).

+0

Ho appena aggiornato la mia domanda. Il fatto è che anche Eureka è usato nel progetto. Ad ogni modo, ho bisogno di disabilitare gli endpoint, quindi ho bisogno di impostare endpoint su false i.e. endpoints.enabled: false'. Il fatto è che funziona per/endpoint salute, ma non per/info. – Sasa

Problemi correlati