Использование @RolesAllowed в Spring Boot Application защищено с помощью keycloak - PullRequest
0 голосов
/ 05 июня 2018

Я хочу создать микросервис с помощью Spring Boot 2 и защитить его с помощью keycloak.Я использовал новую keycloak-spring-boot-2-starter:4.0.0.Beta3 зависимость.

My KeycloakConfig:

@KeycloakConfiguration
@EnableGlobalMethodSecurity(jsr250Enabled = true, securedEnabled = true)
public class KeycloakConfig extends KeycloakWebSecurityConfigurerAdapter {

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) {
    KeycloakAuthenticationProvider keyCloakAuthProvider = keycloakAuthenticationProvider();
    keyCloakAuthProvider.setGrantedAuthoritiesMapper(new SimpleAuthorityMapper());

    auth.authenticationProvider(keyCloakAuthProvider);
}

@Bean
public KeycloakConfigResolver KeyCloakConfigResolver() {
    return new KeycloakSpringBootConfigResolver();
}

@Bean
@Override
protected SessionAuthenticationStrategy sessionAuthenticationStrategy() {
    return new NullAuthenticatedSessionStrategy();
}

@Bean
public FilterRegistrationBean keycloakAuthenticationProcessingFilterRegistrationBean(KeycloakAuthenticationProcessingFilter filter) {
    //noinspection unchecked
    FilterRegistrationBean registrationBean = new FilterRegistrationBean(filter);
    registrationBean.setEnabled(false);
    return registrationBean;
}

@Bean
public FilterRegistrationBean keycloakPreAuthActionsFilterRegistrationBean(KeycloakPreAuthActionsFilter filter) {
    //noinspection unchecked
    FilterRegistrationBean registrationBean = new FilterRegistrationBean(filter);
    registrationBean.setEnabled(false);
    return registrationBean;
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    super.configure(http);
    http
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .sessionAuthenticationStrategy(sessionAuthenticationStrategy())
            .and()
            .authorizeRequests()
            .anyRequest().denyAll();

}

Если я заменил свой метод configure на следующий, все отлично работает для моего клиента только для предъявителя:

super.configure(http);
    http
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
            .sessionAuthenticationStrategy(sessionAuthenticationStrategy())
            .and()
            .authorizeRequests().antMatchers("/service/example/ping*").hasRole("user")
            .anyRequest().denyAll();

Но что яхочу сделать, это аннотировать мои веб-сервисы @RolesAllowed("myRole") для контроля доступа.Все остальные сервисы должны быть отклонены по умолчанию.Если я пытаюсь сделать, это не работает.У кого-нибудь есть идеи, почему и как я мог это сделать?

Привет из Германии!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...