728x90
현대 웹 애플리케이션은 다양한 보안 위협에 노출되어 있습니다.
Spring Security는 이러한 위협으로부터 애플리케이션을 보호하기 위해 필수적인 보안 프레임워크입니다.
주요 기능으로는 인증 및 권한 부여의 표준화, 강력한 보안 기능 제공, 유연한 커스터마이징 및 지속적인 업데이트가 있습니다.
Spring Security를 사용하면 보안 관리가 간편해지고, 최신 보안 위협에 효과적으로 대응할 수 있습니다.
오늘은 Spring Security에서의 로그인 처리과정을 눈으로 확인해 보았습니다. ▼
먼저 Spring Security를 사용 전후를 비교해보면 다음과 같습니다.
사용 전
- 직접 구현: 보안 기능을 직접 개발해야 하며, 복잡하고 오류가 발생하기 쉬움.
- 시간 소모: 보안 요구 사항을 처음부터 끝까지 직접 코딩해야 하므로 시간이 많이 소요됨.
- 유지보수 어려움: 커스텀 보안 코드의 유지보수와 테스트가 어려울 수 있음.
- 보안 업데이트 부족: 최신 보안 취약점에 대한 대응이 느림.
사용 후:
- 표준화된 보안: 인증, 권한 부여 등 보안 기능이 표준화된 방식으로 제공됨.
- 설정 용이성: XML 또는 Java 기반 설정으로 간편하게 보안 구성 가능.
- 커스터마이징: 필요에 따라 보안 설정을 쉽게 맞춤화할 수 있음. ➡️ Customization
- 지속적인 업데이트: 최신 보안 위협에 대한 패치를 제공하여 최신 보안 상태 유지.
- 문서와 커뮤니티 지원: 풍부한 문서와 활발한 커뮤니티 지원으로 문제 해결이 용이함.
Spring Security 로그인 처리 과정
사용자가 로그인 시도를 하면, Spring Security는 다음과 같은 과정을 통해 인증을 처리합니다:
- 로그인 요청
- 사용자가 로그인 페이지에서 "user/login" 엔드포인트를 통해 로그인 요청을 보냅니다.
- 요청에는 사용자 이름과 비밀번호가 포함됩니다.
- AuthenticationFilter
- Spring Security의 UsernamePasswordAuthenticationFilter가 로그인 요청을 가로채고, 사용자 이름과 비밀번호를 추출합니다.
- AuthenticationManager
- 추출된 사용자 이름과 비밀번호는 AuthenticationManager에 전달됩니다.
- AuthenticationManager는 사용자의 자격 증명을 검증하기 위해 AuthenticationProvider를 사용합니다.
- AuthenticationProvider
- AuthenticationProvider는 사용자 이름과 비밀번호를 기반으로 사용자 정보를 조회하고, 자격 증명이 유효한지 확인합니다.
- 유효한 경우 Authentication 객체를 반환합니다.
- 유효하지 않은 경우, AuthenticationProvider는 AuthenticationException을 던지며, 로그인 실패로 처리됩니다.
- SecurityContext
- 유효한 인증 정보가 반환되면, SecurityContext에 Authentication 객체를 저장하여 사용자 세션에 인증 정보를 유지합니다.
- 로그인 성공 처리
- 인증이 성공하면, 사용자는 로그인 후에 지정된 페이지로 리다이렉션 됩니다.
- 실패 시, 오류 메시지가 표시되고 로그인 페이지로 다시 전송됩니다.
위와 같이 Spring Security를 사용하면 보안 관리가 간소화되고, 애플리케이션의 보안 수준을 효과적으로 향상할 수 있습니다.
또한 Spring Security를 도입하면, 복잡한 인증 및 권한 관리 작업을 손쉽게 처리할 수 있습니다.
오늘 배운 내용을 바탕으로, Spring Security를 활용한 보안 관리가 한층 더 명확하고 효율적으로 이루어질 수 있을 것 같습니다!
'TIL,일일 회고' 카테고리의 다른 글
[TIL,일일 회고] 2024.08.06 - 마이크로서비스 아키텍처에서 Spring Cloud Config의 필요성 ✅ (0) | 2024.08.06 |
---|---|
[TIL, 일일 회고] 2024.08.05 - Spring Cloud Gateway의 중요성 및 MSA 아키텍처에서의 역할 (0) | 2024.08.05 |
[TIL,일일 회고] 2024.08.03 - SpringCloud 서킷 브레이커 (0) | 2024.08.03 |
[TIL, 일일 회고] 2024.08.02 - FeignClient와 Ribbon을 통한 클라이언트 사이드 로드 밸런싱 (0) | 2024.08.02 |
[TIL,일일 회고] 2024.08.01 - 서비스 디스커버리 (1) | 2024.08.01 |