Spring security: менеджер аутентификации и глобальная конфигурация безопасности с конфигурацией Java из конфигурации xml - PullRequest
0 голосов
/ 26 апреля 2018

Я использую пружинную защиту 4.2.5.RELEASE и пружину 4.3.16.RELEASE Моя XML-конфигурация работает нормально, и она как показано ниже

<security:global-method-security secured-annotations="enabled" pre-post-annotations="enabled" access-decision-manager-ref="methodAccessDecisionManager">
        <security:expression-handler ref="methodExpressionHandler"/>
    </security:global-method-security>
    <security:authentication-manager>
        <security:authentication-provider user-service-ref="userDetailsService">
            <security:password-encoder ref="passwordEncoder">
                <security:salt-source user-property="saltSource" />
            </security:password-encoder>
        </security:authentication-provider>         

        <security:authentication-provider user-service-ref="userDetailsService">
            <security:password-encoder ref="bcryptPasswordEncoder"/>
        </security:authentication-provider>
    </security:authentication-manager>

У меня также есть http конфигурация безопасности нужна эта конфигурация с настройкой Java. но не могу сделать это, потому что я не нахожу никакого решения для access-decision-manager-ref="methodAccessDecisionManager" и <security:expression-handler ref="methodExpressionHandler"/>

@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter  {
    @Override
    protected void configure(HttpSecurity http) throws Exception {

        http
        .csrf().disable()
        .addFilterAt(switchUserProcessingFilter(), SwitchUserFilter.class)
        .authorizeRequests()
        .accessDecisionManager(webAccessDecisionManager())
        .antMatchers("/pages/login.jsf").permitAll()
        .antMatchers("/pages/expired.jsf").permitAll()
        .antMatchers("/css/*").permitAll()
        .antMatchers("/images/*").permitAll()
        .antMatchers("/pages/testui/*").access("hasRole('PRIVILEGE_TESTER')")
        .antMatchers("/pages/client/*").access("hasAnyRole('PRIVILEGE_USE_TENDERING, PRIVILEGE_MANAGE_USERS')")
        .antMatchers("/pages/html5/**").access("hasAnyRole('PRIVILEGE_USE_TENDERING, PRIVILEGE_USE_SPOTREQUEST')")
        .antMatchers("/moker/*").access("isAuthenticated()")
        .antMatchers("/e/*").access("hasRole('PRIVILEGE_FILE')")
        .and()
        .formLogin()
        .loginPage("/pageogin.jsf")
        .usernameParameter("j_username")
        .passwordParameter("j_password")
        .loginProcessingUrl("/j_sy_check")
        .failureUrl("/pages/l_error=1")
        .successHandler(tenderEasyAuthSuccessHandler())
        .and()
        .exceptionHandling()
        .accessDeniedHandler(accessDeniedHandler())
        .and()
        .logout()
        .logoutUrl("/j_spring_security_logout")
        .logoutSuccessUrl("/pages/logout.jsf")
        .and();
    }

     @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
       auth
       .userDetailsService(userDetailsService())
       .passwordEncoder(passwordEncoder().isPasswordValid(encPass, rawPass, salt))

    }

}

Но здесь я нахожу что-нибудь для:

access-decision-manager-ref="methodAccessDecisionManager", security:expression-handler ref=methodExpressionHandler и security:salt-source user-property=saltSource

1 Ответ

0 голосов
/ 26 апреля 2018

Чтобы указать обработчик выражения метода и диспетчер принятия решения о доступе, используйте конфигурацию на основе GlobalMethodSecurityConfiguration:

@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class MyGlobalMethodSecurityConfiguration extends GlobalMethodSecurityConfiguration {

    @Autowired
    private MethodSecurityExpressionHandler methodExpressionHandler;

    @Autowired
    private AccessDecisionManager methodAccessDecisionManager;

    @Override
    protected MethodSecurityExpressionHandler createExpressionHandler() {
        return methodExpressionHandler;
    }

    @Override
    protected AccessDecisionManager accessDecisionManager() {
        return methodAccessDecisionManager;
    }

}

(Удалить @EnableGlobalMethodSecurity из вашего SecurityConfig).

См. Также Справочные документы по безопасности Spring .

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