현재 게시판의 문제:
아무나 게시글을 생성할 수 있음
아무나 다른 사람의 글을 수정/삭제할 수 있음
"author" 문자열만 바꾸면 다른 사람인 척 할 수 있음
비밀번호 없이 이름만 넣으면 됨
해결해야 할 것:
인증 (Authentication): "이 사람이 누구인가?" → 로그인
인가 (Authorization): "이 사람이 이 행동을 할 수 있는가?" → 권한 체크
인증은 신분증을 확인하는 것이고, 인가는 출입 권한을 확인하는 것입니다. 회사 건물에 비유하면 로비에서 신분증을 확인하는 게 인증, 특정 층에 출입할 수 있는지 확인하는 게 인가입니다.
build.gradle에 추가합니다:
dependencies {
// 기존 의존성들...
implementation 'org.springframework.boot:spring-boot-starter-security' // 추가
}
Gradle Sync 후 앱을 실행해보세요. 이게 중요합니다.
앱을 실행하면 콘솔에 이런 로그가 나옵니다:
Using generated security password: a1b2c3d4-e5f6-7890-abcd-ef1234567890
이제 Postman으로 기존 API를 호출해보세요:
GET /api/posts
{
"status": 401,
"error": "Unauthorized"
}
모든 API가 401 Unauthorized를 반환합니다. Spring Security를 추가하면 기본적으로 모든 요청에 인증을 요구합니다.