Spring Security 기초
Spring Security, 인증, 인가, SecurityFilterChain, UserDetailsService, PasswordEncoder
1Spring Security란 무엇인가요?
Spring Security란 무엇인가요?
답변
Spring Security는 Spring 애플리케이션을 위한 보안 프레임워크로, 인증과 인가 기능을 제공합니다. 일반적인 공격(CSRF, XSS, session fixation)으로부터 애플리케이션을 보호하며 다양한 인증 메커니즘(form login, HTTP Basic, OAuth2, JWT)과의 통합을 제공합니다. 이 프레임워크는 필터 체인(Security Filter Chain)을 사용하여 HTTP 요청이 controller에 도달하기 전에 가로채고 처리합니다.
2Spring Security에서 인증과 인가의 차이점은 무엇입니까?
Spring Security에서 인증과 인가의 차이점은 무엇입니까?
답변
인증은 사용자의 신원(당신은 누구인가?)을 검증하며 일반적으로 username/password를 통해 이루어지고, 인가는 권한(무엇을 할 수 있는가?)을 검증합니다. 인증이 먼저 일어나며 사용자 정보를 담은 SecurityContext를 생성합니다. 그 후 인가는 이 정보를 사용하여 사용자가 특정 리소스에 접근할 수 있는지 결정합니다. 예를 들어, 사용자가 성공적으로 인증되었더라도 역할이 ADMIN이 아닌 USER라면 /admin에 접근하도록 인가되지 않을 수 있습니다.
3Spring Security에서 SecurityContext란 무엇입니까?
Spring Security에서 SecurityContext란 무엇입니까?
답변
SecurityContext는 현재 인증된 사용자의 보안 정보, 주로 Authentication 객체를 담는 객체입니다. 이는 SecurityContextHolder에 저장되며 요청 처리 전반에 걸쳐 접근할 수 있습니다. 인증에 성공하면 Spring Security는 사용자 세부 정보(username, authorities, credentials)를 가진 Authentication을 포함하는 SecurityContext를 생성합니다. 이 컨텍스트를 통해 애플리케이션은 현재 사용자가 누구이며 어떤 권한을 가지고 있는지 확인할 수 있습니다.
SecurityContextHolder는 기본적으로 SecurityContext를 어떻게 저장합니까?
Spring Security에서 UserDetails 인터페이스의 역할은 무엇입니까?
+22 면접 질문