[데브코스] Spring Boot 인증·인가(Auth) (4강) - 회원 도입과 인증·인가 개념

zuno·2026년 1월 6일

이번 강의부터는 REST API 구현을 넘어 인증(Authentication)과 인가(Authorization) 를 본격적으로 다루기 시작했다.
기존 구조의 가장 큰 문제점부터 짚고, 이를 해결하기 위한 첫 단계로 회원(Member) 개념을 도입한다.


❗ 현재 구조의 문제점

현재 프로젝트 상태에서는 다음과 같은 치명적인 보안 문제가 존재한다.

  • 어떤 사용자든지
  • 로그인 여부와 상관없이
  • 모든 글과 댓글을 수정 / 삭제 가능

👉 즉, 작성자 개념도 없고 권한 체크도 없다.

이 상태에서는:

  • 서비스라고 부르기 어려움
  • 인증/인가가 전혀 없는 API
  • 보안적으로 매우 위험한 구조

🔑 해결 방향: 인증과 인가

이 문제를 해결하려면 반드시 인증(Auth)과 인가(AuthZ) 개념이 필요하다.

그런데 인증/인가를 하려면 누가 요청을 보냈는지 알아야 한다.
👉 즉, 회원(사용자) 이 필요하다.


👤 로그인, 인증, 인가의 차이

강의에서 설명한 개념을 정리하면 다음과 같다.

🔹 로그인(Login)

  • 신분증을 발급받는 행위
  • 신분증 안에는:
    • 신원 정보
    • 권한 정보

🔹 인증(Authentication)

  • 신분증이 있는지
  • 신분증이 유효한지
  • 이 요청자가 누구인지 확인

🔹 인가(Authorization)

  • 이 사람이
  • 어떤 권한을 가지고
  • 어떤 행동을 할 수 있는지 체크

🔄 인증/인가 흐름 정리

  1. 클라이언트(브라우저)가 로그인 요청
  2. 서버가 신분증(인증 정보)을 발급
  3. 이후 요청마다 신분증을 함께 전송
  4. 서버는:
    • 인증 → 누구인가?
    • 인가 → 이 작업을 할 권한이 있는가?

👉 이 모든 흐름의 출발점은 회원 가입이다.


🧱 회원 기능을 위한 준비 단계

인증/인가를 구현하려면 필요한 것

  1. 회원 가입
  2. 회원 정보 저장
  3. 회원을 식별할 수 있는 구조
  4. 회원과 게시글/댓글의 연결

👉 그래서 이번 강의에서는 회원(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");
}
  • 5명의 샘플 회원 생성
  • system 계정은 추후 시스템 작업용으로 사용 예정
  • 아직은 단순한 구조

⚠️ 현재 단계의 주의사항

  • username 중복 체크는 아직 없음
  • ❗ 보안 목적의 비밀번호 암호화도 아직 없음

👉 이는 추후 단계에서 점진적으로 개선할 예정


📌 이번 강의 핵심 요약

  • 모든 글/댓글 수정·삭제가 가능한 구조는 문제
  • 인증/인가를 위해서는 회원 개념이 필수
  • 로그인 → 인증 → 인가 흐름 이해
  • 인증/인가의 시작은 회원 테이블
  • 이번 강의에서는:
    • Member 엔티티 도입
    • 샘플 회원 데이터 생성까지 진행

0개의 댓글