Spring Security는 Java 기반의 Spring Framework에서 애플리케이션의 보안을 담당하는 모듈입니다. 주로 인증(Authentication)과 권한 부여(Authorization)를 관리하여 웹 애플리케이션이 안전하게 동작할 수 있도록 도와줍니다. 다음은 Spring Security의 주요 기능과 개념에 대한 설명입니다.
hasRole('ADMIN')와 같은 표현식을 사용하여 특정 역할을 가진 사용자만 접근할 수 있도록 설정할 수 있습니다.Spring Security는 여러 개의 필터로 구성된 체인을 통해 요청을 처리합니다. 이 필터 체인은 요청이 애플리케이션의 실제 자원에 도달하기 전에 인증 및 권한 부여를 처리합니다. 주요 필터로는 UsernamePasswordAuthenticationFilter, BasicAuthenticationFilter 등이 있습니다.
Spring Security는 설정을 통해 애플리케이션 보안을 간편하게 구성할 수 있습니다. XML 또는 Java 기반의 설정을 사용할 수 있으며, 최근에는 Java 기반의 설정(@Configuration 클래스)이 주로 사용됩니다.
WebSecurityConfigurerAdapter: Spring Security 설정의 핵심 클래스입니다. 이 클래스를 확장하여 보안 규칙을 정의할 수 있습니다. 예를 들어, 특정 URL 패턴에 대해 인증을 요구하거나, CSRF 보호를 설정할 수 있습니다.Spring Security는 CSRF 공격을 방지하는 기본적인 보호 기능을 제공합니다. CSRF는 사용자가 의도하지 않은 요청을 서버에 보내도록 유도하는 공격입니다. Spring Security는 요청 시마다 고유한 CSRF 토큰을 생성하고, 이 토큰이 서버로 전송되어야만 요청이 유효한 것으로 간주됩니다.
Spring Security는 OAuth2와 JWT(Json Web Token)를 사용한 인증과 권한 부여도 지원합니다. OAuth2는 제3자 인증을 위한 표준 프로토콜이며, JWT는 인코딩된 토큰 형식으로, 서버와 클라이언트 간에 인증 정보를 안전하게 전달하는 데 사용됩니다.
이와 같은 기능을 통해 Spring Security는 웹 애플리케이션이 안전하게 동작하도록 지원합니다. Spring Security를 통해 손쉽게 강력한 보안 기능을 구현할 수 있습니다.