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 인증이 필요한 요청시 호출된다.
- validateToken: HTTP 요청에서 JWT를 추출하고 유효성 검증을 진행한다.
- JWT가 유효하면, Claims에서 사용자 정보를 추출한다.
- 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 |