저번 글에서는 Spring security에 대해서 알아보았다.
[Spring] SpringSecurity란?
Spring Security는 자바(Java) 기반의 애플리케이션(특히 Spring 프레임워크)에서 보안(인증 및 인가)을 담당하는 가장 강력하고 표준적인 프레임워크이다. 쉽게 비유하자면, 웹 사이트라는 '건물'을 지
sunm2n.tistory.com
Spring security를 공부하기 위해서 꼭 알아야 할 개념인 인증과 인가에 대해서 알아보자.
인증(Authentication)과 인가(Authorization)는 보안의 가장 기초이면서, 실무자들도 용어를 섞어 쓸 만큼 자주 헷갈리는 개념이다.
하지만 이 둘은 명확히 다르다.
가장 쉽게 이해할 수 있도록 '회사 출근' 상황에 비유해서 알아보자.
1. 인증 (Authentication): "당신, 우리 회사 직원 맞아?"
- 핵심 질문: "당신은 누구입니까?" (Who are you?)
- 정의: 접속하려는 대상(사용자)이 주장하는 신원이 실제 본인이 맞는지 확인하는 절차
- 비유:
- 회사 로비의 스피드 게이트에 사원증을 찍는 행위
- "나는 이 회사 직원 홍길동입니다"라고 사원증으로 증명하고 로비 안으로 들어가는 과정
- 웹/앱 예시:
- 로그인 (아이디/비밀번호 입력)
- 이메일 인증
- OTP, 지문 인식, Face ID
2. 인가 (Authorization): "직원인 건 알겠는데, 사장실에 들어갈 수 있어?"
- 핵심 질문: "당신은 이것을 할 권한이 있습니까?" (What can you do?)
- 정의: 인증된 사용자라 할지라도, 특정 리소스나 기능에 접근할 자격이 있는지 확인하는 절차 반드시 '인증' 후에 일어난다.
- 비유:
- 사원증을 찍고 회사에 들어왔지만(인증 완료), '서버실'이나 'CEO 집무실' 문은 안 열리는 상황.
- 일반 직원은 '사무실'만 들어갈 수 있고, 보안팀 직원은 '서버실'까지 들어갈 수 있는 권한의 차이
- 웹/앱 예시:
- 일반 회원은 '공지사항'을 읽을 수만 있음 (Read)
- 관리자(Admin)는 '공지사항'을 쓰고 지울 수 있음 (Write/Delete)
- 유료 멤버십 회원만 볼 수 있는 동영상

주의! HTTP 상태 코드의 함정 HTTP 상태 코드 이름 때문에 많이 헷갈린다.
- 401 Unauthorized: 이름은 권한 없음(Unauthorized) 같지만, 실제로는 인증이 안 됨(로그인 필요)을 의미한다.
- 403 Forbidden: 로그인은 했지만, 권한이 없어서 금지됨을 의미한다. (이게 진짜 인가 실패)
3. Spring Security에서의 처리
앞서 배운 필터 개념을 적용해 보면 순서가 명확해진다.
- 인증 필터 (Authentication Filter):
- 사용자가 ID/PW를 보냄 → DB와 대조 → 맞으면 "통과! 당신은 User1입니다." (SecurityContext에 저장)
- 인가 필터 (FilterSecurityInterceptor):
- User1이 /admin 페이지를 요청함 → 잠깐, User1은 ROLE_USER네? 여긴 ROLE_ADMIN만 올 수 있어. → 403 에러 발생 (차단)
4. 결론
- 인증(Authentication): 문을 통과하는 열쇠 (로그인)
- 인가(Authorization): 그 열쇠로 어느 방까지 갈 수 있는지 (권한 등급)
'tech > Spring' 카테고리의 다른 글
| [Spring] 스프링 빈과 스프링 컨테이너 (0) | 2025.12.16 |
|---|---|
| [Spring] SpringSecurity란? (0) | 2025.12.03 |
| [Spring] @Valid와 @Validated (1) | 2025.11.12 |
| Java에서 컬렉션 sort 동작 방식 (0) | 2025.11.05 |
| [Spring] @ActiveProfiles("test") vs @DataJpaTest (0) | 2025.08.21 |