Springboot

[Security] Spring Security의 흐름

KJihun 2024. 6. 22. 16:03
728x90

사용된 Class

1. WebSecurityConfig

2. JwtUtil

3. JwtAuthenticationFilter

4. JwtAuthorizationFilter

5. AuthExceptionFilter

 

 

 

1. WebSecurityConfig (Security 설정 로드)

  • @EnableWebSecurity 를 통한 웹 보안 활성화
  • WebSecurityConfig
    - CorsConfigurationSource: CORS 에서 허용할 오리진, 메서드, 헤더 등을 설정
    - PasswordEncoder: BCryptPasswordEncoder를 통한 비밀번호 암호화
    - AuthenticationManager: 로그인 인증을 처리하는 핵심 컴포넌트인 `AuthenticationManager`를 설정 
    - JwtAuthenticationFilter: JWT 인증 필터 설정. 로그인 요청을 처리 및 JWT를 생성하여 사용자에게 반환한다.
    - SecurityFilterChain: HTTP 요청에 대한 보안 설정 구현. CSRF 보호 설정, 세션 관리 방식, 인증 처리 방식 등 정의하며, JWT 인증 필터와 예외 처리 필터를 등록

 

2. JwtAuthenticationFilter (로그인 처리)

  • attemptAuthentication
    • 로그인 요청시, 요청을 가로챈다
    • 로그인 정보로 `UsernamePasswordAuthenticationToken`을 생성 및 `AuthenticationManager`를 통해 인증 시도
  • successfulAuthentication (인증 성공시)
    • JWT를 생성하고 Response 헤더에 추가한다.
    • Redis를 사용하여 Refresh Token을 저장한다.
  • unsuccessfulAuthentication (인증 실패시)
    • 에러를 반환한다.


3. JwtAuthorizationFilter (인증 및 권한 부여)

 

- OncePerRequestFilter 클래스를 상속받아 한 번의 요청에 대해 한 번만 호출된다.

- doFilterInternal: JWT 인증이 필요한 요청시 호출된다.

  1. validateToken: HTTP 요청에서 JWT를 추출하고 유효성 검증을 진행한다.
  2. JWT가 유효하면, Claims에서 사용자 정보를 추출한다.
  3. setAuthentication: 추출된 사용자 정보를 기반으로 SecurityContextHolder 에 인증 객체를 설정한다.

 

 

4. AuthExceptionFilter (예외 처리)

- doFilterInternal: 다른 필터에서 예외 발생 시, AuthExceptionFilter가 호출된다.
- 예외가 발생하면, 적절한 에러 응답을 생성하여 클라이언트에게 반환한다.

'Springboot' 카테고리의 다른 글

[Springboot] JWT 0.15.2  (0) 2024.06.22
[Spring] Websocket + Stomp을 통한 실시간 통신  (0) 2024.02.27
[Springboot] QueryDSL 2  (0) 2023.08.09
[Springboot] QueryDSL  (0) 2023.08.08
[SpringBoot] Redis Caching  (0) 2023.08.06