2015-09-16 3 views
0

У меня есть довольно готовая конфигурация Spring J2EE для Spring Security 3.2 J2EE, которую я почти завершил преобразованием в конфигурацию Java.Весенняя безопасность: миграция самозакрывающегося диспетчера проверки подлинности xml тега в конфигурацию Java

Перед файл XML:

<sec:global-method-security pre-post-annotations="enabled" /> 
<sec:authentication-manager /> 

<sec:http pattern="/css/**" security="none" /> 
<sec:http pattern="/js/**" security="none" /> 
.... 
<sec:http auto-config="true" create-session="never" use-expressions="true> 
    <sec:session-management session-fixation-protection="none" /> 
    <sec:jee mappable-roles="admin,user" /> 
    <sec:intercept-url pattern="/operations/admin/**" access="hasRole('ROLE_admin')" /> 
    <sec:intercept-url pattern="/**" access="permitAll" /> 
</sec:http> 

Самость закрытия аутентификации менеджер тегов мой вопрос. Он собирает PreAuthenticatedAuthenticationProvider, созданный тегом jee. Я не совсем уверен, как повторить его в Java Config:

@Configuration 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled=true) 
@ImportResource("classpath:security-context.xml") 
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter{ 
    @Override 
    public void configure(WebSecurity web) throws Exception{ 
     web 
      .ignoring.antMatchers("/css/**") 
      .and() 
      .ignoring.antMatchers("/js/**"); 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception{ 
     http 
      .sessionManagement() 
      .sessionFixation().none() 
      .sessionCreationPolicy(SessionCreationPolicy.NEVER) 
     .and() 
     .csrf().disable() 
     .jee() 
      .mappableAuthorities("admin","user") 
     .and() 
     .authorizeRequests() 
      .antMatchers("/operations/admin/**").hasAuthority("admin") 
      .anyRequest.permitAll(); 
    } 
} 

Это работает теперь только потому, что я ввожу мой старый безопасности-context.xml, который не имеет ничего в нем, кроме аутентификации менеджера тегов.

У меня есть игра с объявлением бина AuthenticationManagerBuilder, но похоже, что для работы требуется определенная ссылка на AuthenticationProvider или UserDetailsService. Конструктор defaultManager ProviderManager устарел.

Я знаю, что запись Jee() добавляет PreAuthenticatedAuthenticationProvider к SharedObjects внутри HttpSecurity, так что я мог идти через проблемы получения PreAuthenticatedAuthenticationProvider из SharedObjects создать AuthenticationManager, если это необходимо, но мне кажется, что там должно быть простым сопоставлением конфигурации Java с самозакрывающимся тегом xml, который мне просто не хватает.

ответ

0

Вы можете попробовать это на классе SpringSecurityConfig: -

@Autowired 
public void registerGlobal(AuthenticationManagerBuilder auth) throws Exception { 
    auth.authenticationProvider(new AuthenticationManagerBeanDefinitionParser.NullAuthenticationProvider()); 
} 
+0

Это сделал трюк. Благодаря! – fractonimbus