20180622 Spring Security

Spring 2018. 6. 22. 13:34

1. Java Configuration

XML 기반 설정에서 springSecurityFilterChain 을 등록해주어야 한다. 하지만 자바로 스프링 시큐리티를 설정하려고 할 땐, WebSecurityConfigurerAdapter 라는 추상클래스를 하나 상속받는 클래스를 구현하고 해당 클래스에 @EnableWebSecurity 라는 애노테이션을 달아준다. 이렇게 구현된 클래스를 통해 springSecurityFilterChain 서블릿 필터를 생성(포함)하는 것이다.


2. 스프링 시큐리티 로그인 화면

스프링 시큐리티는 따로 로그인 화면을 표현하지 않는다. 따로 설정하지 않은 URL에 대해서 자동으로 하나의 로그인 페이지를 표현한다. 하지만 실제 서비스에서는 따로 로그 페이지를 제공하려고 할 것이다. 그래서 아래와 같이 구성할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.provisioning.InMemoryUserDetailsManager;
 
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
    @Bean
    public UserDetailsService userDetailsService(){
        InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager();
        manager.createUser(User.withUsername("user").password("password").roles("USER").build());
        return manager;
    }
    
    // 사용자 인증정보 뿐만 아니라 주어진 양식에 대한 인증을 지원하고자 하는경우, 다음과 같은 구성
    protected void configure(HttpSecurity http) throws Exception{
        http.authorizeRequests()    
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/login")    // (1)
                .permitAll();           // (2)
    }
}
 
cs
  1. .formLogin().loginPage("/login") : 로그인 페이지 위치 지정

  2. .formLogin().permitAll() : 모든 사용자 (인증되지 않은) 액세스 권한을 부여


Posted by doubler
,