목록SpringBootProject/SringBoot_JWT_RestApi (9)
개발자의 서재
https://www.hanumoka.net/2019/01/21/springBoot-20190121-springboot-deploy-docker/ springboot - docker 이미지로 만들어 실행하기 들어가기SpringBoot로 생성한 스프링 프로젝트를 docker 이미지로 만들어서 동작시키는 예제를 만들어보겠다. 준비물윈도우에 docker for windows를 설치 윈도우에 maven 설치 springboot 웹 프로젝트 준비 Spr www.hanumoka.net 위 링크 참고 1. gradle > build 를 실행해서 jar 파일을 생성한다. build 가 완료되면 /build/libs/ 경로에 jar 파일이 생성된다. 2. 커맨드에서 아래 명령어를 실행한 후 localhost:8080 에..
각 Controller 의 mapping Url 별 테스트코드를 작성해보았다. @SpringBootTest 를 사용하였고, @Before 에서는 data.sql을 통해 insert 되는 기본 데이터를 삭제하고 테스트용 user 정보입력 + Security Context 에 user 정보를 등록하고, jwt 토큰 발급 + 헤더에 토큰등록을 하여 토큰인증이 필요한 api가 정상 실행되도록 하였다. @After 에서는 테스트 후 입력된 데이터를 모두 삭제하도록 하였다. JoinControllerTest.java package com.leesh.springbootjwttutorial.restApiTest; import com.fasterxml.jackson.databind.ObjectMapper; import ..
REST API 를 SWAGGER 를 이용해 문서화 해보기 1. 스웨거 라이브러리 추가 maven repository 에서 swagger 로 검색해보았다. 검색 결과가 여러개 나와서 이것처것 찾아보다가 아래 2개가 적합한 것으로 확인되었다. springfox swagger ui => swagger 를 브라우저ui로 볼수있는 기능 springfox swagger2 => swagger 기능 2. build.gradle 에 의존성추가 implementation 'io.springfox:springfox-swagger-ui:2.9.2' implementation 'io.springfox:springfox-swagger2:2.9.2' 3. config 패키지에 SwaggerConfig.java 생성 package..
- 상품,주문 entity, dto, servcie, controller 추가 Entity 관계도(ERD) 1. entity 생성 Product.java package com.leesh.springbootjwttutorial.entity; import lombok.*; import javax.persistence.*; /** * 상품 entity */ @Entity @Table(name="product") @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class Product { @Id @Column(name="prd_id") @GeneratedValue(strategy = GenerationType.IDENTITY) // ..
- 회원가입 api 생성 - 권한검증 확인 1. util 패키지 생성 > SecurityUtil.java 클래스 생성 package com.leesh.springbootjwttutorial.util; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Component; import j..
- DTO 생성 - Repository 관련 코드 생성 - 로그인API, 관련 로직 생성 1. DTO 패키지 생성 2. LoginDto.java 생성 package com.leesh.springbootjwttutorial.dto; import lombok.*; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; @Getter @Setter @Builder @AllArgsConstructor @NoArgsConstructor public class LoginDto { //@NotNull = requestBody로 입력받을때 not null 체크 @NotNull @Size(min=3, max=50) pri..
- JWT 설정 추가 - JWT 관련 코드 추가 - Security 설정 추가 1. application.yaml 에 jwt관련 설정 추가 여기서는 HS512 알고리즘을 사용해 암호화를 할 것이기 때문에 Secret Key는 64 byte 이상이어야 한다. Secret Key는 특정 문자열을 Base64 로 인코딩한 값으로 설정한다. jwt: header: Authorization #secret : 별도 문자열을 base64로 암호화한값 secret: c3ByaW5nYm9vdC1qd3QtdHV0b3JpYWwtc3ByaW5nYm9vdC1qd3QtdHV0b3JpYWwtc3ByaW5nYm9vdC1qd3QtdHV0b3JpYWwK #토큰만료시간(ms) token-validity-in-seconds: 3600 ba..
- datasource, JPA 설정 - entity 생성, - h2 console 결과확인 1. application.properties > yaml 파일로수정 > 내용입력 spring: h2: console: enabled: true datasources: url: jdbc:h2:mem:testdb driver-class-name: org.h2.Driver username: sa password: jpa: database-platform: org.hibernate.dialect.H2Dialect hibernate: ddl-auto: create-drop properties: hibernate: #콘솔창에서 sql 보기위한 설정 format_sql: true show_sql: true logging: ..
서버와 클라이언트가 같은 세션 ID 를 공유하는 방식의 기존의 세션 로그인 방식은 서버가 각 클라이언트들의 세션ID를 서버의 별도 공간에 저장해야 한다는 점 때문에 여러가지 제한 사항들이 있다. (서버의 저장공간 필요, 서버가 여러 대 일 경우 세션 클러스터링 필요. 각 서비스별로 별도 로그인 필요등) JWT 로그인 방식은 서버에서 클라이언트에게 토큰을 발급 한 후 별도로 저장 해 놓을 필요가 없기 때문에 세션 로그인 방식에 비해 여러가지 장점을 가지고 있다. (물론 단점도 있다.) 이번 실습으로 JWT 토큰 인증 방식을 REST API 적용하는 방법을 익히고자 한다. 목적 : SpringSecurity + JWT 토큰인증 구축해보기 JWT 토큰인증방식을 REST API 에 적용해보기 JPA 활용 공부 ..