5
我試圖保護Spring Boot執行器端點。我在我的/api
REST界面上安全工作,但試圖增加內置端點的安全性似乎並不奏效。無法保護Spring引導管理執行器端點
我已經設置了終端的分組在我application.properties
:
management.context-path=/management
我在我的Java配置
@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);
}
當我使用我的瀏覽器去任何低於/api
有這個,我按預期獲得403回。當去/ management/info
例如,我看到返回的JSON,我也期待一個403
我也想加入這個我application.properties
文件:
management.security.role=ADMIN
但是,這並沒有幫助。
調試輸出顯示:
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/**']
然後爲什麼我嘗試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
完全正確!我試過的兩個是'/ info'和'/ health',兩者似乎總是可用的。如果我使用'/ beans',我確實得到了預期的403。您可以添加此信息[在文檔中](http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#production-ready-sensitive-endpoints)? –
它在那裏:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-sensitive-endpoints,http://docs.spring.io/spring-boot/docs /電流/參考/ htmlsingle /#生產就緒的端點。如果您想提出進一步的說明,請參閱。 –
事實上,我似乎沒有注意到表中的「敏感」列。 –