스프링 JWT 심화 2 : 보안을 위한 JWT 진화
·
Spring Security/JWT
1. 토큰 사용 추적"Spring Security JWT" 시리즈를 통해 구현한 단일 토큰의 사용처를 추적하면 아래와 같다. 로그인 성공 JWT 발급 : 서버 측 -> 클라이언트로 JWT 발급권한이 필요한 모든 요청 : 클라이언트 -> 서버 측 JWT 전송 권한이 필요한 요청은 서비스에서 많이 발생한다. (회원 CRUD, 게시글/댓글 CRUD, 주문 서비스, 등등)따라서 JWT는 매시간 수많은 요청을 위해 클라이언트의 JS  코드로 HTTP 통신을 통해 서버로 전달된다. 해커는 클라이언트 측에서 XSS를 이용하거나 HTTP 통신을 가로채서 토큰을 훔칠 수 있기 때문에 여러 기술을 도입하여 탈취를 방지하고 탈취되었을 경우 대비 로직이 존재한다.2. 다중 토큰 : Refresh 토큰과 생명주기위와 같은 문제..
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을 생성한..