안녕하세요. 지금 부터 Spring Security에 대해서 알아보겠습니다.
제가 앞으로 진행하는 시큐리티에 대한 글은 다음과 같은 환경에서 진행됩니다.
개발환경
- JDK 11
- Gradle
- DB - mariaDB
- IDE - Intellij
- Spring Boot
- Spring MVC
- Spring Data JPA
- Thymeleaf
- Lombok
- window10
1) Spring Security란?
- Spring Security는 Spring 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 Spring 하위 프레임워크입니다.
- Spring Security는 "인증" 과 "권한" 에 대한 부분을 Filter의 흐름에 따라 처리합니다.
- Spring Security는 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안 관련 로직을 작성하지 않아도 된다는 장점이 있습니다.
프로젝트 생성
한 후 Next 클릭
현재글은 기본적인 api와 필터를 공부하는 글이므로 Dependencies에 web과 security만 추가해 줍시다.
그리고 위에 spring boot 버전 선택하는칸이있는데 2.7.0 이상 버전부터는 security를 사용할때 상속받는 WebSecurityConfigurerAdapter가 deprecated 되어 밑의 사진과 같이 줄이 그어져 버린다.
우리는 많은 예제가 있는 2.7.0 버전 밑으로 버전을 선택하자. 2.7.0 버전 이상을 사용할거면 상속대신
SecurityFilterChain을 @Bean으로 등록하면 된다. 자세한 내용은 여기에서 참고하면 된다.
프로젝트를 생성하고 빌드를 받은 상태이다.
위의 사진의 메인 메소드를 실행시켜보자.
메인메서드가 실행 되면 Using generated security password : 해서 password가 나오는데 초기 비밀번호를 알려준다.
루트 경로를 포함해 모든 경로에 localhost:8080 해서 들어가면 밑과 같은 화면이 나옵니다.Spring Security에서 기본적으로 제공하는 로그인 화면입니다.
초기 유저네임은 user 이고 password는 콘솔창에 나온 password입니다. 하지만 서버를 재가동할때마다 바뀌게 되므로 매우 귀찮은 일 이므로 설정을 해줍시다.
main/resources/ 하위에 application.yml 파일을 만들어 줍시다. application.properties를 사용하셔도 됩니다.(개인취향)
그리고 위와 같이 하면 초기 유저네임과 패스워드를 설정할 수 있습니다.
그리고 다시 서버를 재가동해 키고 로그인창이 뜨면 user 와 1111로 로그인이 됩니다.
스프링 시큐리티 의존성 추가 시 일어나는 일들
- 서버가 기동되면 스프링 시큐리티의 초기화 작업 및 보안 설정이 이루어진다.
- 별도의 설정이나 구현을 하지 않아도 기본적인 웹 보안 기능이 현재 시스템에 연동되어 작동함.
- 모든 요청은 인증이 되어야 자원에 접근이 가능하다.
- 인증 방식은 폼 로그인 방식과 httpBasic 로그인 방식을 제공한다.
- 기본 로그인 페이지를 제공한다.
- 기본 계정 한 개 제공한다.-username : user password : 랜덤 문자열
문제점
계정추가, 권한 추가, DB연동등 일일이 해줘야한다.
기본적인 보안 기능 외에 시스템에서 필요로 하는 더 세부적이고 추가적인 보안기능이 필요합니다.
이런 부분들은 다음글 부터 계속 이어 나가도록 하겠습니다.
'Spring Boot > Spring Security' 카테고리의 다른 글
[Spring Security] 동시 세션제어, 세션 고정 보호, 세션정책 (0) | 2022.06.29 |
---|---|
[Spring Security] Remember Me 인증, RememberMeAuthenticationFilter (0) | 2022.06.29 |
[Spring Security] Logout처리, LogoutFilter (0) | 2022.06.29 |
[Spring Security] Form Login 인증 필터 (0) | 2022.06.29 |
[Spring Security] Form Login 인증 (0) | 2022.06.29 |
댓글