У меня есть довольно готовая конфигурация 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, который мне просто не хватает.
Это сделал трюк. Благодаря! – fractonimbus