Spring Security - 1

Posted by sJun on November 15, 2020 ·

보통 pom.xml이나 build.gradle 파일에 security dependency를 추가해주면 스프링 부트 시큐리티의 기본 로그인 화면이 나온다.

image

너무 기본적인 폼이라 커스터마이징은 필수다.

보통 SecurityConfig라는 사용자 설정 파일을 생성해서 커스터마이징하고, 이 설정파일은 WebSecurityConfigurerAdapter 라는 클래스를 상속받게 된다.

WebSecurityConfigurerAdapter 내부를 보면 HttpSecurity가 있고 인증과 인가 두 부분으로 나눠져있다. 아래의 그림처럼.

캡처

인텔리J 기준으로 Shift 두번 누르고 WebSecurityConfigurerAdapter을 검색하면 내부 코드를 볼 수 있다.

protected void configure(HttpSecurity http) throws Exception {
        this.logger.debug("Using default configure(HttpSecurity). If subclassed this will potentially override subclass configure(HttpSecurity).");
        http.authorizeRequests((requests) -> {
            ((AuthorizedUrl)requests.anyRequest()).authenticated();
        });
        http.formLogin();
        http.httpBasic();
    }

코드를 보면 어떠한 요구사항에도 무조건 인증을 요청하고 있기 때문에 사용자가 아무런 설정을 하지않으면 무조건 스프링 시큐리티가 기본으로 제공하는 로그인 화면이 나오게 되는 것.

http.formLogin() 과 http.httpBasic()은 기본으로 제공하는 인증 방식이다.

스프링 시큐리티의 의존성만 주입 후 아무런 설정을 하지않고 Run을 누르면

Using generated security password: 9ea17a2c-30b0-419f-899e-fc420a78a9a9

와 같은 기본 패스워드가 나오는데 이것이 초기 비밀번호고 초기 아이디는 user이다.

매번 복사하면서 사용하기 귀찮기 때문에 properties파일이나 yml파일에서 다음과 같이 설정하면 된다

spring.security.user.password=user
spring.security.user.name=user

application.properties 파일

spring:
  security:
    user:
      password: user
      name: user

application.yml 파일