2016-11-01 8 views
0

xml에 여러 진입 점 -ref가있는 security:http 구성이 여러 개 있습니다. 이 구성을 java config로 변환하려고합니다.xml에서 java 구성으로 다중 securiy http 구성을 변환하십시오.

나는이 방법이 복수 서브 클래스 WebSecurityConfigurerAdapter을 사용하여 가능하다는 것을 읽었습니다.

Java 구성에서 각각에 대해 진입 점 -ref를 어떻게 구성해야합니까?

다음은 xml 구성입니다. 자바 클래스와 보안의

<security:http request-matcher-ref="preReqMatcher" auto-config="false" use-expressions="false" entry-point- ref="preAuthenticatedProcessingFilterEntryPoint"> 
    <custom-filter position="PRE_AUTH_FILTER" ref="preAuthFilter" /> 
    <custom-filter after="CAS_FILTER" ref="attrFilter" /> 
    <intercept-url pattern="/**" access="ROLE_USER" /> 
    <csrf disabled="true"/> 
</security:http> 

<security:http auto-config="true" entry-point-ref="casEntryPoint" use-expressions="false" disable-url-rewriting="false"> 
    <custom-filter position="CAS_FILTER" ref="casFilter" /> 
    <custom-filter after="CAS_FILTER" ref="attrFilter" /> 
    <intercept-url pattern="/**" access="ROLE_USER" /> 
    <custom-filter ref="testFilter" before="CAS_FILTER" /> 
    <csrf disabled="true"/> 
</security:http> 

답변

0

다음은 진입 점을 구성하기 위해 알아 낸 방법입니다.

http.httpBasic().authenticationEntryPoint(preAuthenticatedProcessingFilterEntryPoint);

0

구성은 "웹"일부 (요청시) 및 org.springframework에 대한 org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter를 서브 클래 싱하여 @Configuration 클래스를 제공하여 시작합니다. "글로벌"부분 (서비스 계층)에 대한 security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration. (단지 예 ...) 그 @Configuration 클래스에서

public void configure(final WebSecurity web) throws Exception { 
      // @formatter:off 
      web.ignoring() 
       .antMatchers("/*.html","/*.ico","/css/**","/html/**","/i18n/**","/img/**","/js/**","/lib/**"); 
      // @formatter:on 
} 

protected void configure(final HttpSecurity http) throws Exception { 

http.headers() 
       .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsMode.SAMEORIGIN)) 
       .and() 
        .csrf().disable() 
        .addFilterAfter(jeePreAuthenticatedFilter(), AbstractPreAuthenticatedProcessingFilter.class) 
        .addFilterBefore(new BasicAuthenticationFilter(authenticationManagerBean()), 
         UsernamePasswordAuthenticationFilter.class) 
        .addFilterBefore(switchUserProcessingFilter(), SwitchUserFilter.class) 
        .authorizeRequests() 
         .antMatchers("/*.html","/*.ico","/css/**","/html/**","/i18n/**","/img/**","/js/**","/lib/**").permitAll() 
         .anyRequest().authenticated() 

       .and() 
        .sessionManagement() 
        .sessionFixation().none().maximumSessions(maxSessionsPerUser) 
        .sessionRegistry(sessionRegistry) 
       ; 

} 

protected void configure(final AuthenticationManagerBuilder auth) throws Exception { 
    auth.authenticationProvider(basicDAOAuthenticationProvider()); 
    auth.authenticationProvider(preauthAuthProvider()); 
} 

, 당신이해야/: WebSecurityConfigurerAdapter의 하위 클래스에서

, 당신은 몇 가지 "구성 (...)"메소드를 오버라이드 (override) 할 필요가 또한 ... MethodSecurityMetadataSource, AccessDecisionManager가,의 AccessDecisionVoter, ... 당신의 인증 공급자에 대한 콩을 가질 수

같은 원리 당신의 @Configuration, GlobalMethodSecurityConfiguration의 서브 클래스 :

protected AccessDecisionManager accessDecisionManager() { 
... 
} 

protected void configure(final AuthenticationManagerBuilder auth) throws Exception { 
... 
} 

protected MethodSecurityExpressionHandler createExpressionHandler() { 
    ...; 
} 


@Bean 
public MethodSecurityExpressionHandler methodSecurityExpressionHandler() { 
... 
}