REST API (13) 보안 적용 - Account 도메인 추가, Spring Security 적용, 기본설정, Form 인증설정

LEE ·2024년 4월 14일

REST API

목록 보기
13/15

오늘의 목표 :

API 에서 Event 생성, 수정과 같은 경우(Post, Put 요청)에는 Event list, detail 조회, RestDocs 정보 페이지등 과 달리 인증정보가 필요하다.

REST API 보안 적용 (OAuth2)을 하기위해

Account 도메인 추가, Spring Security 적용, 기본설정, Form 인증설정 을 해보자.

오늘의 목차 :

1. Account 도메인 추가

2. Spring Security 적용

3. Spring Security 기본설정

4. Spring Security Form 인증설정

1. Account 도메인 추가

Account 도메인 추가

enum 타입의 AccountRole 추가

Event 도메인에 Account 도메인을 연관관계로 추가


2. Spring Security 적용

SpringSecurity 적용하기 위해 pom.xml 에 의존성을 추가해준다.


UserDetailsService 구현

UserDetailsService는 Spring Security에서 사용자 인증을 위해 필요한 정보를 제공하는 인터페이스이다.

Spring Security를 사용자 인증과 관련된 작업을 처리하기위해 UserDetailsService를 구현해야한다.

UserDetailsService를 구현한 AccountService

AccountService에 대한 Test 작성

AccountService.loadUserByUsername 했을 때 우리는 Email을 통하여 회원정보를 가져왔다. 해당회원정보가 없다면 UsernameNotFoundException을 발생시켰기 때문에 테스트를 작성할 때 없는 Email로 회원을 찾고 해당 테스트가 assertThrows를 사용하여 UsernameNotFoundException.class예외를 발생시키길 기대한다고 작성한다.


Test 실행결과 sernameNotFoundException.class 예외를 발생시켜 Test가 성공하는 것을 볼 수 있다.


3. Spring Security 기본설정

AppConfig 추가

ModelMapper와, PasswordEncoder를 Bean 으로 등록해준다. ModelMapper는 기존 RestApiApplication 에 있었지만 이동해준다.

ApplicationRunner 를 Bean 으로 등록하여 Application이 시작할 때 테스트용 계정과 Event 를 30개정도 생성 하도록 추가해준다.


SecurityConfig 추가


/docs/index.html에 접근하는 요청과, 정적 리소스에 대한 접근 권한은 접근을허용하고, 다른 모든요청에 대해 인증이 필요하다고 설정하였다.

해당 설정을 가지고 테스트 해보자.

/docs/index.html 요청할 때는 권한이 필요없이 접근가능한 것을 확인할 수 있다.

/api/event (Get) 요청을 보내면 다음과 같이 Spring Security 가 제공하는 로그인 페이지로 이동하게 된다.

ApplicationRunner 에 등록한 테스트계정으로 로그인 하게되면 다음과 같이 응답값을 Event 목록을 조회할 수 있게된다.

0개의 댓글