본문 바로가기

Backend/Spring

(5)
[JWT] RefreshToken의 DB에서 Redis로 이사하기 기존 JWT로 인증, 인가 시스템을 서칭했을 때 Redis를 활용한 방법, DB를 활용하는 방법을 통해 RefreshToken을 관리하는 것을 알고 있었지만 Redis를 활용해 본적이 없기도 하고, 빠른 구현을 위해 DB를 선택해 프로젝트를 진행하고 있었다.최근에 다시 알아보면서 성능, 관리, 확장성 부분에서 Redis가 훨씬 용이하다는 것을 알게 되어 시스템을 바꾸게 됐다.▼ - 기존 아키텍쳐https://sada-dev.tistory.com/61 [Spring] Spring Security와 JWT로 구현하는 인증 시스템Why?Spring Security- 강력한 인증 및 인가를 내장하여 로그인, 권한 검증, CSRF 보호, 세션 관리 등 여러 보안 기능을 쉽게 구현 가능하다.- 커스텀 필터, 핸들러..
[API문서화] Spring Boot 3.x 버전 Swagger 적용하기 필요성기존에는 프로젝트 진행할 때는 따로 API 문서를 만들지 않고 진행했던 기억이 난다.3그때 당시에는 JSON 텍스트 형식으로 프론트엔드 분과 데이터 모양 합의하고, 추가로 변경된 내용들이 있다면 메모했던 내용들을 가지고 다시 가져가 서로 맞추고 하는 과정들을 했던 것으로 기억한다. 매우 번거롭다API 문서화 자동화 라이브러리를 이용한다면,  API 호출시 반환될 데이터의 모양을 미리 볼 수도 있고 중복된 API를 개발하거나 불필요한 API들을 한눈에 알아보기 쉬운 장점이 있다. Spring Boot 기반 프로젝트에서는 일반적으로 2가지의 API 문서화 툴을 사용하는데 장단점을 알아보고 비교해보자 Swagger (OpenAPI)Spring REST Docs문서 자동화 방식코드 어노테이션 기반테스트 코..
[Spring] Spring Security와 JWT로 구현하는 인증 시스템 Why?Spring Security- 강력한 인증 및 인가를 내장하여 로그인, 권한 검증, CSRF 보호, 세션 관리 등 여러 보안 기능을 쉽게 구현 가능하다.- 커스텀 필터, 핸들러 추가로 세밀한 보안 정책을 추가, 관리할 수 있다.Jwt- 서버 측에 별도의 세션 정보를 저장하지 않는 토큰 기반 인증 방식으로 서버 확장이 용이해짐.- Jwt 토큰 자체에 필요한 사용자 정보와 권한 정보 (Claim) 이 포함되어 있어, 별도의 데이터베이스 조회 없이 토큰만으로 인증 및       인가 처리가 가능- 여러 서버나 마이크로서비스 환경에서 인증 상태를 공유해야 할 때 중앙의 세션 저장소가 필요없으므로 간편하게 인증처리가 가능- 토큰에 서명(Signature)을 포함하여 변조 방지, 만료 시간(expirati..
[querydsl] kotlin gradle에서 초기세팅하기 주석 처리된 querydsl 쪽을 따라 적어주면 초기 세팅할 수 있다. plugins { java id("org.springframework.boot") version "3.2.0" id("io.spring.dependency-management") version "1.1.4" // querydsl 추가 id("com.ewerk.gradle.plugins.querydsl") version "1.0.10" } group = "com.chandev" version = "0.0.1-SNAPSHOT" val queryDslVersion = "5.0.0" java { sourceCompatibility = JavaVersion.VERSION_17 } configurations { compileOnly { exte..
[JPA] 쿼리 파라미터 로그로 직접 살펴보기 JPA에서 자동으로 관리되는 쿼리들은 처음에 ? 로 바인딩 되어 어떤 값이 들어와서 처리되었는지 알기 어렵다. application.yml에 설정해주면 로그에서 직접 볼 수 있다. org.hibernate.type: trace 설정 완료한 이후에는 쿼리 값을 직접 보며 어떤 식으로 파라미터가 들어왔는지 실제로 조회가 가능해진다. (Tip) Spring boot 3.0 이상 버전 부터는 기존 설정을 해당 내용으로 바꿔주면 정상 작동한다. org.hibernate.orm.jdbc.bind: trace (Tip) application.yml은 Test환경과 실제 패키징 환경을 구분지어 적용시킬 수 있다. test 폴더 내부에 resources 폴더를 만들고 application.yml을 생성하여 별도로 Tes..