이번 강의부터는 REST API 구현을 넘어 인증(Authentication)과 인가(Authorization) 를 본격적으로 다루기 시작했다.
기존 구조의 가장 큰 문제점부터 짚고, 이를 해결하기 위한 첫 단계로 회원(Member) 개념을 도입한다.
현재 프로젝트 상태에서는 다음과 같은 치명적인 보안 문제가 존재한다.
👉 즉, 작성자 개념도 없고 권한 체크도 없다.
이 상태에서는:
이 문제를 해결하려면 반드시 인증(Auth)과 인가(AuthZ) 개념이 필요하다.
그런데 인증/인가를 하려면 누가 요청을 보냈는지 알아야 한다.
👉 즉, 회원(사용자) 이 필요하다.
강의에서 설명한 개념을 정리하면 다음과 같다.
👉 이 모든 흐름의 출발점은 회원 가입이다.
👉 그래서 이번 강의에서는 회원(Member) 엔티티를 먼저 만든다.
개발 단계에서는 매번 회원을 직접 생성하기 번거롭기 때문에
초기 데이터(BaseInitData) 를 통해 샘플 회원을 미리 생성한다.
@Transactional
public void work1() {
if (postService.count() > 0) return;
Post post1 = postService.write("제목 1", "내용 1");
Post post2 = postService.write("제목 2", "내용 2");
Post post3 = postService.write("제목 3", "내용 3");
post1.addComment("댓글 1-1");
post1.addComment("댓글 1-2");
}
@Transactional
public void work1() {
if (memberService.count() > 0) return;
memberService.join("system", "1234", "시스템");
memberService.join("admin", "1234", "관리자");
memberService.join("user1", "1234", "유저1");
memberService.join("user2", "1234", "유저2");
memberService.join("user3", "1234", "유저3");
}
system 계정은 추후 시스템 작업용으로 사용 예정👉 이는 추후 단계에서 점진적으로 개선할 예정