백엔드 개발 · 중급
Spring Security의 인증(Authentication)과 인가(Authorization)의 차이점과 동작 방식을 설명해주세요.
힌트 · 필터 체인과 SecurityContext를 생각해보세요.
인증인가AuthenticationAuthorizationPrincipal
모범답안
Spring Security에서 인증(Authentication)과 인가(Authorization)는 보안의 핵심적인 두 가지 단계입니다.
인증은 '누구'인지 확인하는 과정입니다. 사용자가 아이디와 비밀번호를 입력하면, Spring Security는 이 정보를 기반으로 사용자를 식별하고, Principal 객체를 생성하여 SecurityContext에 저장합니다. 이 Principal 객체는 이후 인가 과정에서 사용됩니다.
반면, 인가는 인증된 사용자가 '무엇'을 할 수 있는지 결정하는 과정입니다. 인증된 사용자가 특정 리소스에 접근하려고 할 때, Spring Security는 사용자의 권한(Authorities)을 확인하여 접근 권한을 부여하거나 거부합니다. 예를 들어, 'ADMIN' 권한을 가진 사용자만 특정 API를 호출할 수 있도록 설정할 수 있습니다.
Spring Security의 필터 체인을 통해 이 두 과정이 순차적으로 처리됩니다. 인증 필터가 먼저 사용자를 인증하고, 인가 필터가 인증된 사용자의 권한을 확인하여 접근 제어를 수행합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Java / Spring 면접 질문
- Spring에서 AOP(Aspect Oriented Programming)란 무엇이며, 어떤 상황에서 사용하나요?
- Spring Boot의 자동 설정(Auto Configuration)은 어떻게 동작하나요?
- Java 8의 Stream API와 병렬 스트림(Parallel Stream)의 사용법과 주의사항에 대해 설명해주세요.
- JWT(JSON Web Token)의 구조와 Spring에서의 활용 방법에 대해 설명해주세요.
- Spring에서 싱글톤 빈의 동시성 문제는 어떻게 해결하나요?
- Java의 Garbage Collection 동작 원리와 G1 GC의 특징에 대해 설명해주세요.