kok202
Spring security architecture summary

2020. 2. 19. 22:30[정리] 기능별 개념 정리/Security + OAuth

 

Spring security architecture summary

AuthenticationFilter 의 결과로 Security context 가 채워진다.

 

 

 

WebSecurityConfigurerAdapter example

 

사용자의 Request 가 들어오면 해당 요청을 처리하기 위해 어떤 필터를 사용할지 불러온다. WebSecurityConfigurerAdapter 를 작성하는 과정은 어떤 필터들을 사용해야 하는지 지정하는 과정과 같다.

 

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .mvcMatchers("/account/**").permitAll()
            .mvcMatchers("/admin").hasRole("ADMIN")
            .mvcMatchers("/user").hasRole("USER")
            .accessDecisionManager(accessDecisionManager())
            .and()
            .formLogin()
            .and()
            .httpBasic();
    }

    @Bean
    public AccessDecisionManager accessDecisionManager(){
        RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
        roleHierarchy.setHierarchy("ROLE_ADMIN > ROLE_USER");

        DefaultWebSecurityExpressionHandler defaultWebSecurityExpressionHandler = new DefaultWebSecurityExpressionHandler();
        defaultWebSecurityExpressionHandler.setRoleHierarchy(roleHierarchy);

        WebExpressionVoter webExpressionVoter = new WebExpressionVoter();
        webExpressionVoter.setExpressionHandler(defaultWebSecurityExpressionHandler);
        List<AccessDecisionVoter<? extends Object>> voters = Arrays.asList(webExpressionVoter);
        return new AffirmativeBased(voters);
    }
    
}