Spring Security JWT 11 : JWT 검증 필터
·
Spring Security/JWT
JWT 검증 필터스프링 시큐리티 filter chain에 요청에 담긴 JWT를 검증하기 위한 커스텀 필터를 등록해야 한다. 해당 필터를 통해 요청 헤더 Authorization 키에 JWT가 존재하는 경우 JWT를 검증하고 강제로 SecurityContextholder에 세션을 생성한다. (이 세션은 STATELESS 상태로 관리되기 때문에 해당 요청이 끝나면 소멸된다.)JWTFilter 구현JWTFilterpublic class JWTFilter extends OncePerRequestFilter { private final JWTUtil jwtUtil; public JWTFilter(JWTUtil jwtUtil) { this.jwtUtil = jwtUtil; } @O..
Spring Security JWT 10 : 로그인 성공 JWT 발급
·
Spring Security/JWT
로그인 성공7~9 강을 통해 로그인 로직, JWTUtil 클래스를 생성하였다. 이제 로그인이 성공했을 경우 JWT를 발급하기 위한 구현을 진행한다.JWTUtil 주입LoginFilter : JWTUtil 주입public class LoginFilter extends UsernamePasswordAuthenticationFilter { private final AuthenticationManager authenticationManager; //JWTUtil 주입 private final JWTUtil jwtUtil; public LoginFilter(AuthenticationManager authenticationManager, JWTUtil jwtUtil) { this.auth..
Spring Security JWT 7 : 로그인 필터 구현
·
Spring Security/JWT
자료스프링 시큐리티 필터 참고 자료https://docs.spring.io/spring-security/reference/servlet/architecture.html Architecture :: Spring SecurityThe Security Filters are inserted into the FilterChainProxy with the SecurityFilterChain API. Those filters can be used for a number of different purposes, like exploit protection,authentication, authorization, and more. The filters are executed in a specidocs.spring.io로그인..
Spring Security JWT 6 : 회원가입 로직 구현
·
카테고리 없음
회원가입 로직JoinDTOJoinDTOpackage com.example.springjwt.dto;import lombok.Getter;import lombok.Setter;@Setter@Getterpublic class JoinDTO { private String username; private String password;}JoinControllerjoinControllerpackage com.example.springjwt.controller;import com.example.springjwt.dto.JoinDTO;import com.example.springjwt.service.JoinService;import org.springframework.stereotype.Controller;..
Spring Security JWT 5 : DB 연결 및 Entity 작성
·
Spring Security/JWT
데이터베이스 종류와 ORM회원 정보를 저장하기 위한 데이터베이스는 MariaDB 엔진의 데이터베이스를 사용한다. 접근은 Spring Data JPA를 사용한다.데이터베이스 의존성 주석 해제목차 2번에서 진행했던 build.gradle의 Spring Data JPA 및 MariaDB Driver 의존성 주석을 해제한다.변수 설정DB 연결 설정 : application.properties# MariaDB settingspring.datasource.driver-class-name=org.mariadb.jdbc.Driverspring.datasource.url=jdbc:mariadb://localhost:3306/jwtspring.datasource.username=rootspring.datasource.pa..
Spring Security JWT 3 : SecurityConfig 클래스
·
Spring Security/JWT
SecurityConfig 클래스 설명스프링 시큐리티의 인가 및 설정을 담당하는 클래스이다. Security Config 구현은 스프링 시큐리티의 세부 버전별로 많이 상이하다. (지금은 스프링 시큐리티 6.2.1 버전으로 구현) 스프링 시큐리티 시리즈 : 버전별 Security Config 구현 방법https://www.youtube.com/watch?v=NdRVhOccuOsSecurity Config 클래스 기본 요소 작성시큐리티 JWT 구현을 위한 Config 클래스의 일부분 작성.먼저 기본적인 설정만 진행하고 프로젝트를 진행하면서 커스텀 필터 요소들을 추가 구현 예정. SecurityConfigpackage com.example.springjwt.config;import org.springframe..
Spring Security JWT 2 : 프로젝트 생성 및 의존성 추가
·
Spring Security/JWT
의존성필수 의존성LombokSpring WebSpring SecurityS1pring Data JPAMySQL Driver데이터베이스 의존성 주석 처리임시로 주석 처리 진행 (스프링 부트에서 데이터베이스 의존성을 추가한 뒤 연결을 진행하지 않을 경우 런타임 에러 발생)JWT 필수 의존성JWT 토큰을 생성하고 관리하기 위해 JWT 의존성을 필수적으로 설정해야 한다.설정은 build.gradle을 통해 진행하며 이때 버전을 선택하여 적용. JWT 0.12.3 버전 : build.gradledependencies { implementation 'io.jsonwebtoken:jjwt-api:0.12.3' implementation 'io.jsonwebtoken:jjwt-impl:0.12.3' i..
Spring Security JWT 1 : 목표 및 동작 원리
·
Spring Security/JWT
실습 목표스프링 시큐리티 6 프레임워크를 활용하여 JWT 기반의 인증/인가를 구현하고 회원 정보 저장(영속성)MariaDB 데이터베이스를 활용한다.서버는 API 서버 형태로 구축한다. (웹 페이지를 응답하는 것이 아닌 API 클라이언트 요청을 통해 데이터 응답만 확인함)구현인증 : 로그인인가 : JWT를 통한 경로별 접근 권한회원가입JWT 인증 방식 시큐리티 동작 원리회원 가입 : 내부 회원 가입 로직은 세션 방식과 JWT 방식의 차이가 없다.로그인 (인증) : 로그인 요청을 받은 후 세션 방식은 서버 세션이 유저 정보를 저장하지만 JWT 방식은 토큰을 생성하여 응답한다.경로 접근 (인가) : JWT Filter를 통해 요청의 헤더에서 JWT를 찾아 검증을 하고 일시적 요청에 대한 Session을 생성한..