피드로 돌아가기
Dev.toSecurity
원문 읽기
Spring Security 7: MFA 내재화 및 설정 구조의 Modularization 실현
Spring Security 7: MFA, Modular Config, and What Breaks
AI 요약
Context
기존 Spring Security는 MFA 구현을 위해 외부 라이브러리 의존 또는 개별 커스텀 구현이 필수적인 구조적 한계를 보유함. 또한 SecurityFilterChain 정의 시 기존 Boot 기본 설정을 모두 대체해야 하는 All-or-Nothing 방식의 설정 구조로 인해 설정 누락에 따른 보안 취약점 발생 가능성이 높았음.
Technical Solution
- FactorGrantedAuthority 및 AllRequiredFactorsAuthorizationManager 도입을 통한 애플리케이션 레벨의 표준 MFA 인증 체계 구축
- 인증 시점(Duration) 기반의 시간 제한 룰을 적용하여 중요 기능 접근 전 재인증을 강제하는 정교한 보안 정책 설계
- SecurityFilterChain 전체 교체 방식에서 Customizer 기반의 부분 변경 구조로 전환하여 Boot 기본 설정의 보존 및 유지보수성 향상
- .and() DSL 제거 및 Lambda 스타일 강제를 통한 설정 가독성 확보 및 체이닝 오류 방지
- OAuth 2.1 스펙 준수를 위한 Password Grant 제거 및 PKCE(Proof Key for Code Exchange) 기본 적용을 통한 보안 강화
실천 포인트
- OAuth2 Password Grant 사용 중인 레거시 클라이언트를 Authorization Code Flow로 전환 - SecurityFilterChain 빈 정의 대신 Customizer<HttpSecurity>를 통한 부분 설정 적용 검토 - Open Rewrite를 활용하여 .and() DSL에서 Lambda 스타일로의 자동 마이그레이션 수행 - 중요 API 엔드포인트에 Duration 기반 MFA 재인증 로직 적용 여부 검토