이 글의 시리즈는 "인프런 : 스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring security, 정수원님의 강의"를 요약한 것이다.
1. 프로젝트 생성
프로젝트 생성은 다음 그림과 같이 진행한다. dependency는 일단 spring web만 추가한다.
src/main/java/io/security/basicsecurity/SecurityController.java
1
2
3
4
5
6
7
8
9
|
@RestController
public class SecurityController {
@GetMapping("/")
public String index() {
return "home";
}
}
|
cs |
기본적으로 RestController로 컨트롤러를 하나 만들고 실행해본다. 서버를 실행하고 localhost:8080 접속 시 body로 내용을 출력하는 컨트롤러를 작성하였다. 이렇게 하면 이 페이지와 자원에는 누가됐든, 어떤 환경에서든 접근이 가능하다.
여기에 제한을 걸어주기 위한 것이 Spring Security이다. Spring security 의존성을 추가한다.
pom.xml 파일
1
2
3
4
|
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
|
cs |
Maven을 새로고침하고, 서버를 재기동하면 콘솔창에 UUID 형식의 security password가 생성되는 것을 확인할 수 있다.
그리고 기본 url로 접속만 해도, 로그인 요청 화면이 출력되는 것을 확인할 수 있다. 이것은 스프링부트의 spring-security가 기본적으로 제공하는 페이지이며, 여기서 Username은 "user", password 는 서버 기동 시 생성된 UUID 값이다. username과 password를 입력하면 원래의 home 페이지에 접근이 가능함을 확인할 수 있다.
2. 스프링 시큐리티 기본 API 및 Filter 이해
WebSecurityConfigurerAdapter --- HttpSecurity
configure 메서드
스프링 시큐리티에서 제공하는, 웹 보안 기능의 초기화 및 설정이 가능하도록 해주는 클래스가 WebSecurityConfigurerAdapter 클래스이다. 여기서 인자로 사용되는 HttpSecurity 클래스가 있고, 이 클래스에서 인증과 인가에 관련된 API들이 제공된다. 아래 코드를 보면 이해된다.
사용하고자하는 SecurityConfig 클래스를 만들고, WebSecurityConfigurerAdapter를 상속받는다. 그리고 HttpSecurity를 인자로 사용하는 configure 메서드를 @Override 해준다.
@EnableWebSecurity 어노테이션은 WebSecurityConfiguration 등 웹 보안 활성화를 위한 여러 클래스들을 Import 해준다. 그리고 HttpSecurity 클래스를 http 라는 이름의 인자로 받아와서 제공되는 메서드들을 실행한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
@Configuration
@EnableWebSecurity //WebSecurityConfiguration 등 웹 보안 활성화를 위한 여러 클래스들을 Import 해준다.
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests() //요청에 대한 보안 설정을 시작함
.anyRequest().authenticated(); //어떤 요청이든 authentication(인가) 과정을 거치도록 한다.
http
.formLogin();
}
}
|
cs |
WebSecurityConfigurerAdapter 내용 살펴보기
WebSecurityConfigurerAdapter의 내용을 살펴보자.
- getHttp()로 초기화, HttpSecurity 객체를 생성함
- http.csrf() 등의 메서드를 호출한다. 각 메서드는 보안에 필요한 각 필터들을 호출하는 역할을 한다.
- getHttp()의 맨 마지막에 this.configure를 호출하는 것을 확인할 수 있다. 이를 통해 기본적인 보안 필터 호출 후, 추가적인 설정 및 기능들을 실행할 수 있도록 한다.
WebSecurityConfigurerAdapter - getHttp() 메서드
configure 메서드 기본내용
기본 설정은 이렇고, 위에서 살펴본대로 Override를 통해서 사용자가 원하는 보안 기능들을 추가하게 된다.
기본 로그인 정보 변경
아래와 같이 작성하여 spring security에서 기본적으로 작동하는 ID, PW를 설정해줄 수 있다.
1
2
|
spring.security.user.name=user
spring.security.user.password=1111
|
cs |
참조
1) 인프런 - 스프링 시큐리티 - Spring Boot 기반으로 개발하는 Spring Security - 정수원님 강의
'Programming-[Backend] > Spring Security' 카테고리의 다른 글
[스프링 시큐리티] [작성중] 6. 권한 설정, 표현식 (0) | 2022.01.08 |
---|---|
[스프링 시큐리티] [작성중] 5. 익명 사용자 인증 필터, 세션 제어 필터 (0) | 2022.01.07 |
[스프링 시큐리티] 4. Logout, Rember me 필터 (0) | 2022.01.05 |
[스프링 시큐리티] 3. Form Login 인증 방식 파악 계속 : AuthenticationManager, Provider와 SecurityContext (0) | 2021.12.29 |
[스프링 시큐리티] 2. Form Login 인증 방식 파악 UsernamePasswordAuthenticationFilter, AnthPathRequestMatcher (0) | 2021.12.26 |