[Spring] Security + JWT + Redis를 활용한 로그인 구현 (1)
·
Back-end/Spring
Security를 활용한 로그인 구현을 위해 여러 블로그들을 참고하여 작성한 글입니다.내용에 잘못된 점이 있다면 지적해주시면 감사하겠습니다! 먼저 로그인 구현에 앞서 JWT가 뭔지 개념을 정리해보도록 하자. JWT란?JWT는 JSON Web Token의 약자로, Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token이다.언제?권한 부여 : JWT를 사용하는 가장 일반적인 방식. 사용자가 로그인하면 각 후속 요청에 JWT가 포함되어 사용자가 해당 토큰으로 서비스 및 리소스에 접근할 수 있다.정보 교환 : 공개/개인 키 쌍을 사용해 JWT에 서명이 가능하기 때문에 발신자가 누구인지 식별 가능하다. 또한 헤더와 페이로드를 사용하여 서명을 계산하므로 콘텐츠 변조여부를 식별할 ..
[Spring] WebClient를 통한 공공데이터 Open API 호출
·
Back-end/Spring
공공데이터 Open API를 사용하는 서비스의 흐름을 알기 위해 공부를 하면서 알게 된 내용들을 기록하는 글입니다. 오류나 고쳐야 할 사항들이 있다면 피드백 부탁드리겠습니다!WebFlux 라이브러리를 사용한 이유Spring에서 외부 API를 사용할 수 있는 종류는 다음과 같다.HttpURLConnectionRestTemplateWebClientHttpURIConnection은 URLBuilder를 사용하여 코드를 작성한 것으로, 생각보다 코드가 길고 장황하다.RestTemplate은 Spring에서 지원하는 객체로, 동기식으로 Rest 방식 API를 호출할 수 있는 Spring 내장 클래스이다.동기적으로 동작하기 때문에 요청/응답 동안 스레드가 차단되는 문제점이 있을 뿐더러, Spring boot 5...
[Spring] H2 DataBase 사용법
·
Back-end/Spring
1. H2 DataBase란?H2 데이터베이스는 설치가 필요 없고 용량이 가벼우며 개발용 로컬 DB로 사용하기 좋은 DBMS이다.자바 기반의 오픈소스 관계형 데이터베이스 관리 시스템(DBMS).서버(Server) 모드와 임베디드(Embedded) 모드의 인메모리 DB 기능을 지원.브라우저 기반의 콘솔 모드를 이용할 수 있음.별도 설치과정이 없고 2.5MB 이하의 저용량 DB.표준 SQL의 대부분을 지원로컬 및 테스트 환경에서 많이 사용됨.2. 설치 후 사용법1. http://h2database.com/html/main.html 에서 다운로드.2. C:\Program Files(x86)\H2\bin 위치에서 h2 window 파일 실행하기. H2 DBH2 DB에는 3가지 모드가 있다.- Server Mod..
[Spring] createdAt, updatedAt 사용하기
·
Back-end/Spring
Entity 설계 시 해당 데이터가 생성된 시점, 마지막으로 수정한 시점 등을 속성값으로 사용하고 싶을 때가 있다. 이 때 사용하는 것이 createdAt, LastModifiedAt 속성이다. 1. SpringApplication 설정@SpringBootApplication@EnableJpaAuditing // 추가public class DlinkApplication { public static void main(String[] args) { SpringApplication.run(DlinkApplication.class, args); }} 보통 Springboot 를 실행시키는 클래스 상단에 많이 사용한다.JPA Auditing(감시, 감사) 기능을 활성화하기 위한 어노테이션으로 createdDat..
[Spring] JPA Hibernate의 ddl-auto 속성 분석하기
·
Back-end/Spring
JPA의 구현체 중 하나인 하이버네이트는 다양한 기능을 제공하는데 그 중 엔티티를 등록하면 DDL(Data Definition Language)을 자동으로 작성하여 테이블을 생성하거나 수정해주는 ddl-auto라는 설정이 있다. 사용법- application.yml jpa: hibernate: ddl-auto: # create, none, validate, update, create-drop ddl-auto 속성ddl-auto에 올 수 있는 속성은 다음과 같다. 1. create2. create-drop3. update4. validate5. none createcreate는 단어 그대로 엔티티로 등록된 클래스와 매핑되는 테이블을 자동으로 생성(create)해준다. 이 과정에서 기존에 해..
[AWS] S3 이미지 업로드 및 EC2 연결하기
·
Infra & Cloud/AWS
Simple Storage Service (S3)란?사진, 동영상 등 파일을 저장하기 위해 사용하는 파일 서버 서비스. S3의 버킷에 파일을 업로드 하면, URL로 파싱되어 사용자가 이용할 수 있는 서비스이다.서버에 이미지나 파일 등을 업로드 할 때 로컬 서버에 저장할 경우 데이터가 쌓이다 보면 언젠가 용량이 초과되겠지? 따라서 S3를 사용하면 좋은 점은 다음과 같다.1. 확장성(Scalability)파일 서버는 트래픽이 증가함에 따라 서버 인프라 및 용량 계획을 변경해야 되는데, S3가 확장 및 성능 부분을 대신 처리해준다. 2. 내구성(Durability)여러 영역에 여러 데이터 복사본을 저장하므로 한 영역이 다운되더라도 데이터를 사용할 수 있고, 복구가 가능하다. 이를 Spring 환경에서 적용해보..
[Spring] Swagger 사용 및 JWT과 https 적용해보기
·
Back-end/Spring
1. Swagger란?Swagger는 개발한 Rest API를 문서화 한다.문서화된 내용을 통해 관리 & API 호출을 통한 테스트를 가능하게 해준다. 2. swagger 적용하기build.gradleimplementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0' springfox 말고 현재 꾸준히 업데이트가 진행 중인 springdocs 버전을 사용하여 swagger를 구현하였다.springDoc 공식 문서에 따르면, Spring Boot v3 (Java 17 & Jakarta EE 9)을 사용하기 위해선 위 dependency를 사용해야 한다. Spring Boot 3 지원을 위해 springdoc-openapi v2를 사용해야 하기 ..
[Spring] data.sql을 사용하여 서버 실행 시 데이터 삽입하기
·
Back-end/Spring
흔히 서버를 실행할 때 DB에 더미 데이터가 있으면 좋겠다는 생각을 하곤 한다. 매번 컨트롤러에서 직접적으로 넣어주는 방식으로 테스트를 진행했었지만, 더 좋은 방법이 있었다. jpa의 ddl-auto: create 옵션 설정으로 entity 생성하고 추가적인 ddl 스크립트를 만들어서 서버가 시작함과 동시에 데이터를 삽입하는 것! data.sql을 통해서 dml 작업을 진행해보도록 하겠다!  1. application.yml 수정먼저 data.sql을 사용하기 위해선 반드시 jpa.ddl-auto 속성값으로 create 또는 create-drop 으로 선언해야 한다! spring: jpa: database: mysql hibernate: ddl-auto: create # cre..