보통 pom.xml이나 build.gradle 파일에 security dependency를 추가해주면 스프링 부트 시큐리티의 기본 로그인 화면이 나온다.
너무 기본적인 폼이라 커스터마이징은 필수다.
보통 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 파일