Spring Security는 스프링 프레임워크를 위한 강력하고 맞춤화 가능한 인증 및 접근 제어 프레임워크입니다.
웹 및 기타 방식으로 생성된 애플리케이션을 위해 보안을 제공하는 것을 목적으로 합니다.
주요 기능
- 인증(Authentication): 사용자가 자신이 누구인지 확인하는 과정입니다. 이는 일반적으로 로그인 과정을 통해 이루어지며, 사용자 이름과 비밀번호, 토큰, 인증서 등을 사용할 수 있습니다.
- 권한 부여(Authorization): 인증된 사용자가 수행할 수 있는 작업을 결정합니다. 예를 들어, 관리자는 애플리케이션의 모든 부분에 접근할 수 있지만, 일반 사용자는 제한된 영역에만 접근할 수 있습니다.
- 보안 흐름 제어: HTTP 요청, 메소드 호출, 도메인 객체에 대한 보안을 관리합니다.
- 세션 관리: 세션 고정, 세션 만료, 병렬 세션 제어 등을 관리합니다.
- CSRF(Cross Site Request Forgery) 보호: 사용자의 의도와 무관하게 위조된 요청을 보내는 공격으로부터 보호합니다.
- LDAP, OAuth, SAML 등과의 통합: 다양한 외부 인증 메커니즘과의 통합을 지원합니다.
구현 예시
Spring Security를 구현하는 기본적인 방법은 다음과 같습니다:
- 의존성 추가: 프로젝트의
build.gradle
또는 pom.xml
파일에 Spring Security 의존성을 추가합니다.
- Security Configuration: Java Config를 사용하여 애플리케이션에 대한 보안 설정을 정의합니다. 이는
WebSecurityConfigurerAdapter
클래스를 확장하는 방식으로 이루어질 수 있습니다.
- 사용자 서비스 구현:
UserDetailsService
인터페이스를 구현하여 사용자 정보를 로드하는 방법을 정의합니다.
- 패스워드 인코딩: 비밀번호를 안전하게 저장하기 위해
PasswordEncoder
인터페이스를 사용합니다.
- 인증 및 권한 부여 규칙 정의: HTTP 요청에 대한 인증 및 권한 부여 규칙을 설정합니다.

위 코드는 SpringSecurity + Thymeleaf 사용해서 권한이 있는 사용자만 보이게 함
Spring Security는 기본적으로 많은 보안 기능을 제공하지만, 애플리케이션의 특정 요구 사항에 맞게 세부적으로 맞춤 설정할 수 있는 유연성도 제공합니다.