Spring Boot 3.1 & Spring Security 6: JWT 검증 리팩토링 (11편)
·
Spring Security
JWT 필터 스프링 시큐리티 코드 리팩토링을 진행했다. 1. JwtAuthorizationFilter 클래스를 리팩토링 했다. 기존에는 한줄로 이루어져있던 코드를 extract method로 각각 역할별로 추출했다. import com.fasterxml.jackson.databind.ObjectMapper; import com.recipia.web.config.security.jwt.TokenUtils; import com.recipia.web.domain.user.constant.RoleType; import com.recipia.web.exception.ErrorCode; import com.recipia.web.exception.RecipiaApplicationException; import io...
Spring Security 6 이해하기: 동작 원리와 보안 기능 탐구
·
Spring Security
스프링 시큐리티가 어떻게 동작하는지 궁금해서 알아봤다. 1. 최상위 필터 인터페이스인 SecurityFilterChain 확인 package org.springframework.security.web; import java.util.List; import jakarta.servlet.Filter; import jakarta.servlet.http.HttpServletRequest; /** * Defines a filter chain which is capable of being matched against an * {@code HttpServletRequest}. in order to decide whether it applies to that request. * * Used to configure a ..
Spring Boot 3.1 & Spring Security 6: 로그인 & 메인 페이지 컨트롤러 (9편)
·
Spring Security
로그인 뷰를 보여주고 action을 실행시킬 로그인 컨트롤러와 메인페이지를 보여주게될 메인 컨트롤러를 작성한다. 1. @Controller - 로그인, 메인페이지 컨트롤러 1-1. LoginController 이 코드는 사용자의 로그인 및 로그아웃을 관리하는 컨트롤러이다. Spring의 @Controller 어노테이션을 사용하여 웹 요청을 처리하는 클래스임을 나타낸다. @Slf4j @RequiredArgsConstructor @Controller public class LoginController { /** * [View] 로그인 페이지를 엽니다. */ @GetMapping("/login") public String login() { return "login"; } /** * [Action] 로그인 프로..
Spring Boot 3 & Security 6 시리즈: UserDetailsService, DTO 작성하기 (8편)
·
Spring Security
이번 포스트에서는 UserDetailsService, DTO 클래스를 작성해 보자 1. CustomUserDetailsService 코드 작성 1-1. 코드 작성하기 이 코드는 Spring Security의 사용자 인증 정보를 관리하는 UserDetailsService 인터페이스를 직접 커스텀해서 구현하여 사용자의 인증 정보를 로드하는 서비스를 정의하는 클래스다. @Slf4j @RequiredArgsConstructor @Service public class CustomUserDetailsService implements UserDetailsService { private final UserRepository userRepository; @Override public UserDetails loadUser..
Spring Boot 3 & Security 6 시리즈: JWT 검증 인터셉터 작성하기 (6편)
·
Spring Security
JwtToken의 유효성을 검증할 인터셉터 클래스를 작성하자 프로젝트 구성은 아래의 포스트에 있다.👇🏻👇🏻 Spring Boot3에서 Spring Security6 사용하기: SecurityConfig 클래스 작성하기 (2편) SpringBoot에서 Spring Security를 사용하는 방법을 알아보자 Spring security6의 FilterChain방식👇🏻👇🏻 Spring Security6 - Authentication(인증) 코딩은 글쓰기라고 생각한다. 꾸준히 기록하며 내 개발 실력을 키 curiousjinan.tistory.com 1. JwtTokenInterceptor - 인터셉터 클래스 설정 jwtTokenInterceptor는 Spring의 HandlerInterceptor 인터페이스를 ..
Spring Boot 3 & Security 6 시리즈: AuthenticationProvider, 인증 핸들러 구현하기 (5편)
·
Spring Security
이번에는 시큐리티의 인증 제공자와 인증에 성공, 실패했을때 결과를 핸들링할 handler 클래스를 작성하자 1. 인증 제공자 클래스 작성 - CustomAuthenticationProvider 1-1. CustomAuthenticationProvider 클래스 작성 (인증 제공자) 이 코드는 CustomAuthenticationProvider라는 클래스로, 스프링 시큐리티의 AuthenticationProvider 인터페이스를 구현한 사용자 정의 인증 제공자이다. 이 클래스는 사용자의 인증을 처리하는 역할을 한다. @Slf4j @RequiredArgsConstructor public class CustomAuthenticationProvider implements AuthenticationProvider..
Spring Boot 3 & Security 6 시리즈: JWT 인증 필터 JwtAuthorizationFilter 작성(4편)
·
Spring Security
이번 포스트에서는 Jwt 인증 필터를 생성하고 Spring Security의 필터체인(FilterChain)에 연결하자 코드를 사용할때 import는 시리즈 2편에 작성된 구성을 확인해 보고 사용하는 것을 추천한다.(버전이 안맞아서 오류가 생기는 경우가 존재)👇🏻👇🏻 Spring Boot3에서 Spring Security6 사용하기: SecurityConfig 클래스 작성하기 (2편) SpringBoot에서 Spring Security를 사용하는 방법을 알아보자 Spring security6의 FilterChain방식👇🏻👇🏻 Spring Security6 - Authentication(인증) 코딩은 글쓰기라고 생각한다. 꾸준히 기록하며 내 개발 실력을 키 curiousjinan.tistory.com 1...
Spring Boot 3 & Security 6 시리즈: SecurityConfig 클래스 작성하기 (2편)
·
Spring Security
SpringBoot에서 Spring Security를 사용하는 방법을 알아보자📌 서론Spring Boot 3 프로젝트에서 Thymeleaf와 함께 JWT (JSON Web Token) 인증 방식을 적용했다. 일반적으로, JWT는 클라이언트 사이드 렌더링(CSR) 환경인 React, Vue, Android, iOS 앱에서 주로 사용된다. 이 방식에서 클라이언트는 인증에 필요한 정보를 담은 토큰을 사용하여 서버와 인증을 수행한다. 반면, 서버 사이드 렌더링(SSR) 환경에서는 주로 세션을 통한 인증 방식이 일반적이다. 이번 프로젝트에서는 SSR 환경에도 JWT를 적용해 본 결과, 서버가 페이지를 렌더링 하면서도 JWT를 통한 인증이 가능함을 확인했다. 지금부터 그 내용을 공유한다.Spring securit..