Spring Boot с Spring Security OAuth2 и Actuator

Я пытаюсь понять, как использовать @EnableResourceServer Spring Security OAuth2, не затрагивая при этом безопасность привода Spring Boot по умолчанию. Я использую Spring Boot 1.5.1 с версиями зависимостей по умолчанию. У меня настроено следующее

@Configuration
@EnableResourceServer
@EnableWebSecurity(debug=true)
@EnableGlobalMethodSecurity 
public class OAuthConfig extends ResourceServerConfigurerAdapter {

    @Override
    public void configure(final HttpSecurity http) throws Exception {
        http
        .authorizeRequests()
        .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
        .mvcMatchers("/resource/{type}").permitAll()
        .antMatchers("/resource/data/**").authenticated();
    }
}

Я не настраиваю явно какие-либо другие параметры безопасности. Я думал, что конечные точки исполнительных механизмов будут по-прежнему защищены надлежащим образом, но я получаю сообщение 401, и при проверке журнала отладки безопасности он ничего не показывает относительно HTTP Basic. Я что-то делаю не так? какая-то другая конфигурация мне нужна?


person Craig Skinfill    schedule 16.02.2017    source источник
comment
какой URL вы запрашиваете? я ожидал бы .antMatchers (/ ‹actuatorurl› / **). allowAll ()   -  person farrellmr    schedule 16.02.2017


Ответы (2)


Я ожидал чего-то вроде этого -

@Override
public void configure(final HttpSecurity http) throws Exception {
    http
    .authorizeRequests()
    .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
    .antMatchers("/health/**").permitAll()
    .mvcMatchers("/resource/{type}").permitAll()
    .antMatchers("/resource/data/**")
    .anyRequest().authenticated();
}
person farrellmr    schedule 16.02.2017
comment
Я, по крайней мере, надеялся, что мне не нужно будет явно настраивать безопасность для привода (у меня все это под / около). Проблема в том, что защита привода настраивается по-разному для каждой конечной точки привода. Например, конечная точка /health общедоступна, а /metrics - нет, и я бы не хотел (если возможно) повторять всю эту конфигурацию безопасности. - person Craig Skinfill; 16.02.2017

Вы должны добавить к свойствам приложения роли управления, что-то вроде этого management.security.roles=ROLE_SOMEROLENAME ваш пользователь должен удерживать эту роль, чтобы иметь доступ к конечным точкам исполнительного механизма. Вы также можете установить путь для конечной точки привода, используя это свойство management.context-path=/myactuator

person Hasson    schedule 20.04.2017