Backend/Spring 9

[Spring boot] Swagger로 API 문서화하기

목차 swagger란? springdoc과 springfox spring boot에 적용하기 결론 Swagger란? https://swagger.io/ API Documentation & Design Tools for Teams | Swagger swagger.io Swagger는 OpenAPI Specification(OAS)의 구현을 위한 라이브러리이다. API의 사양을 명세하고 문서화하여 관리할 수 있도록 도와준다. 여기서 OpenAPI Specification(OAS)란, What is the OpenAPI Specification? The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface ..

Backend/Spring 2022.07.02

[Spring Boot] Redis와 함께 Refresh Token 구현하기

https://hou27.tistory.com/entry/Spring-Security-JWT Spring Security - JWT 이번에는 지난번 세션 인증을 적용한 포스트에 이어서 JWT를 이용한 로그인을 구현해보도록 하겠다. 지난 포스트 https://hou27.tistory.com/entry/Spring-Security-%EC%84%B8%EC%85%98-%EC%9D%B8%EC%A6%9D Spring.. hou27.tistory.com 이번엔 위 포스트에서 진행한 것에 약간의 수정과 추가를 통해 Spring Security + JWT + Spring Data Redis 의 조합을 완성해보도록 하겠다. 진행 순서 Redis 설치 Spring Boot 프로젝트에 Redis 적용 실습을 통한 동작 확인 ..

Backend/Spring 2022.06.17

Spring Security - JWT

이번에는 지난번 세션 인증을 적용한 포스트에 이어서 JWT를 이용한 로그인을 구현해보도록 하겠다. 지난 포스트 https://hou27.tistory.com/entry/Spring-Security-%EC%84%B8%EC%85%98-%EC%9D%B8%EC%A6%9D Spring Security - 세션 인증 지난번에 Spring Security를 적용했었는데, Spring Security 적용하기 [Spring Boot] Spring Security 적용하기 - 암호화 프로젝트를 진행하면서 사용자 시스템을 구축한다면 필연적으로 인증 로직도 구현해야한 hou27.tistory.com 이번 포스트는 https://github.com/murraco/spring-boot-jwt GitHub - murraco/sp..

Backend/Spring 2022.06.11

Spring Security - 세션 인증

지난번에 Spring Security를 적용했었는데, Spring Security 적용하기 [Spring Boot] Spring Security 적용하기 - 암호화 프로젝트를 진행하면서 사용자 시스템을 구축한다면 필연적으로 인증 로직도 구현해야한다. 이 과정에서 만약 사용자의 비밀번호를 평문(Plain Text)으로 저장한다면, 심각한 보안상 문제를 초래 hou27.tistory.com 이번엔 이어서 세션을 기반으로 한 로그인을 구현해보도록 하겠다. 가장 먼저 스프링 시큐리티의 설정을 마무리하고, 타임리프를 통해 간단한 페이지를 구현하여 테스트까지 해볼 예정이다. 우선 변경된 Spring Security 설정 파일의 모습이다. 참고로 이 포스트에서 다루는 Spring Security의 버전은 5.7.1...

Backend/Spring 2022.05.29

@RequestBody, @ModelAttribute 그리고 Argument Resolver

Spring을 공부하던 중 @ModelAttribute 와 @RequestBody 이 둘의 차이를 명확히 정리하지 못해 이렇게 해보고 저렇게 해보는 삽질 끝에 결국 깨닫게 되어 정리해두고자 한다. 기존 form data를 넘겨받아 유저의 회원가입을 진행하는 필자의 controller는 아래와 같았다. @RestController @RequestMapping("/user") @RequiredArgsConstructor public class UserController { private final UserService userService; @PostMapping("/signUp") public User signUp(@ModelAttribute @Validated UserSignUpRequest signUp..

Backend/Spring 2022.05.20

[Spring Boot] Spring Security 적용하기 - 암호화

프로젝트를 진행하면서 사용자 시스템을 구축한다면 필연적으로 인증 로직도 구현해야한다. 이 과정에서 만약 사용자의 비밀번호를 평문(Plain Text)으로 저장한다면, 심각한 보안상 문제를 초래하게 된다. 그렇기 때문에 반드시 암호화하여 관리해야만 한다. 암호화? 해싱? 해싱과 암호화 두 단어가 이런 류의 포스트에서 마구 등장해 헷갈릴 수 있다. 해싱(Hashing)과 암호화(Encryption) 모두 데이터의 보안을 위해 사용하는 것이지만, 가장 큰 차이점은 Hash는 단방향 암호화 기법이고 Encryption는 양방향 암호화 기법이라는 것이다. 때문에 비밀번호를 저장할 때는 행여나 탈취될 가능성을 염두에 두어 평문을 암호화하는 것은 가능하지만 다시 평문으로 복호화하는 것은 불가능한 단방향 암호화 방식을..

Backend/Spring 2022.05.20

Spring Bean 등록하기 - 2가지 방법

Spring Bean 등록 1. 컴포넌트 스캔 원리 @Component annotation 이 있으면 스프링 빈으로 자동 등록됨. Component Scan 은 ComponentScan annotation 가 붙은 package의 하위 package 들을 대상으로 살핀다. (SpringBootApplication annotation 내부에 ComponentScan annotation 존재) 다음 annotation 들은 @Component annotation 가 등록되어있다. @Controller @Service @Repository 스프링은 spring container에 spring bean을 등록할 때, 기본으로 싱글톤으로 등록한다 따라서 같은 스프링 빈이면 모두 같은 인스턴스다. (설정으로 싱글톤..

Backend/Spring 2022.05.03

Spring 프로젝트 실행 - with Intellij (from WSL)

이전 포스트에서 Spring 프로젝트를 생성하고 실행까지 해봤었는데, Spring Boot 프로젝트 생성하기(WSL) - Spring Initializr Spring Boot 프로젝트 생성하기(WSL) - Spring Initializr Spring Boot를 공부하기 위해 알아보던 중 프로젝트를 쉽게 시작할 수 있게 도와주는 도구가 있다는 것을 알게 되었다. Spring Initializr https://start.spring.io/ spring에서 제공하는 웹 도구인데, 원하는 설. hou27.tistory.com 생각보다 환경설정하는 과정에서 간단하게 마무리되지 않아 구글링하며 해결한 문제를 잊지 않기 위해 추가로 포스트를 작성하려 한다. 위 사진처럼 Intellij 우측 상단의 환경설정이 추가되지..

Backend/Spring 2022.05.01

Spring Boot 프로젝트 생성하기(WSL) - Spring Initializr

Spring Boot를 공부하기 위해 알아보던 중 프로젝트를 쉽게 시작할 수 있게 도와주는 도구가 있다는 것을 알게 되었다. Spring Initializr https://start.spring.io/ spring에서 제공하는 웹 도구인데, 원하는 설정을 해준 후 GENERATE 버튼을 누르면 해당 설정으로 생성된 스프링 프로젝트 압축 파일을 받을 수 있다. 위와 같이 간단하게 gradle 프로젝트를 설정해주고, 압축파일을 다운받았다. 해당 파일을 압축해제한 후 wsl의 작업공간에 옮기고 사용할 IDE인 intellij로 열어주었다. wsl로 옮겨주었기 때문에 에러가 발생하는데, setting 창을 열어 WSL에 설치된 java를 선택해주었다. (추가로, Build and run using, Run te..

Backend/Spring 2022.05.01