Spring Boot

    Spring의 새로운 동기식 HTTP Client, RestClient

    RestTemplate 의 maintenance mode로 전환 Spring 에서 주로 사용했던 HTTP Client인 RestTemplate이 maintenance mode 로 들어가고, Webclient 로 대체해서 사용하길 권장한다는 것이다. 아래는 spring docs 의 한 부분이다. NOTE: As of 5.0 this class is in maintenance mode, with only minor requests for changes and bugs to be accepted going forward. Please, consider using the org.springframework.web.reactive.client.WebClient which has a more modern API a..

    JWT 총정리 (2) - Access Token, Refresh Token

    이전 게시글 https://morenow.tistory.com/56 JWT 총정리 (1) - JWT의 원리와 흐름 JWT의 탄생 이전의 인증 체계 JWT 탄생 이전의 인증 체계는 Session & Cookie 방식을 사용했다. 이 방식에서의 여러 단점이 있었지만 가장 큰 단점은 세션 저장소였다. 사용자의 세션 ID를 모아놓은 세 morenow.tistory.com 이전 게시글에서 JWT가 어떤 방식으로 동작하는지 어떤 흐름인지 알아보았다. 이제 실제 동작하는 과정을 알아보고, Spring Boot에서의 간단한 코드를 통해 분석해보자. 그리고 JWT의 단점의 절충안인 Refresh Token에 대해서도 알아보자. Access Token 서버에서 발급한 JWT를 해당 서버에 접근할 수 있다는 의미로 Acce..

    Oauth 2.0 & JWT 의 두 가지 흐름, 그리고 OIDC

    아래 그림들은 카카오 소셜 로그인의 흐름을 정리한 그림이다. 인터넷에 나와있는 각종 그림들을 보고 내 식대로 정리한 것이다. 또한 이런 흐름은 하나만 정답이 아니다. 나는 다음 게시글에서 많은 참고를 했다. https://ttl-blog.tistory.com/1434#%F0%9F%A7%90%20OAuth%202.0%20%ED%94%8C%EB%A1%9C%EC%9A%B0%20%EC%A0%95%EB%A6%AC-1 [Spring] 확장에 유연한 OAuth2.0 로그인 구현(카카오, 네이버, 구글 등) (Security 사용 X) (전 순정 백엔드 개발자기 때문에 React는 못합니다. React 코드는 Chat GPT 시켜서 구현하였고, 대신 백엔드에 온 진심을 담하서 구현하였으니, 프론트 코드는 정말 그냥 테..

    JWT 총정리 (1) - JWT의 원리와 흐름

    JWT의 탄생 이전의 인증 체계 JWT 탄생 이전의 인증 체계는 Session & Cookie 방식을 사용했다. 이 방식에서의 여러 단점이 있었지만 가장 큰 단점은 세션 저장소였다. 사용자의 세션 ID를 모아놓은 세션 저장소를 관리해야 했다. 그리고 매 요청마다 세션 저장소에 접근해야 하는 비용이 컸다. 또한 Monolith 방식의 구조에서 프론트엔드와 백엔드의 분리가 일어나고, 더 나아가 백엔드가 여러 서버로 갈라지는 Microservice 구조가 나타났다. 이 과정에서 세션 방식은 너무 큰 비용을 발생시켰다. 서버가 따로 세션을 관리해서 HTTP의 무상태성을 위배시키는 방식이 아니라 새로운 인증 체계가 필요했다. 이것이 JWT이다. 새로운 인증 체계 - 토큰 그럼 이렇게 하기 위해서 어떤 흐름을 가져..

    Git in IntelliJ - 인텔리제이에서 Git의 모든 것 (2)

    인텔리제이 프로젝트를 깃허브에 연동하자! Untracked File 인텔리제이에서 Git의 모든 것 (1) 에서 말했다시피 Git이 관리하는 모든 파일은 Tracked 파일과 Untracked 파일로 나뉜다. 이 중 Untracked 파일은 좀 특이한 파일이라고 생각하면 된다. 새로 생긴 파일 "git init" 명령어로 생긴 .git 파일은 프로젝트 파일의 전체 범위를 워크스페이스로 지정한다. 이 워크스페이스 안에 폴더 혹은 파일이 새로 생긴다면, 이 파일은 Untracked 상태이다. 따라서 이 폴더 혹은 파일은 따로 add를 해 주어야 Git의 관리 하에 들어가게 되는 것이다. .gitignore 가 관리하는 파일 git에 올라가길 원하지 않는 파일이 있을 수 있다. 프로젝트를 intelliJ로 여..

    Git in IntelliJ - 인텔리제이에서 Git의 모든 것 (1)

    인텔리제이 프로젝트를 깃허브에 연동하자! Git에 관련된 프로젝트로 전환 Git에 관련없는 프로젝트를 Git에 연동 프로젝트를 생성하고, 깃과 관련없는 프로젝트를 보면 아래 사진과 같다. 이 Version Control System 중, 우리는 Git을 쓸 것이다. Terminal 창을 열어서 "git init" 이라고 입력하자. 프로젝트에 '.git'이라는 파일이 생기면서 이제 프로젝트의 Version Control System이 Git으로 선택된다. 조금만 기다리면 다음과 같이 변한다. Git의 파일 체계와 Commit 이제 프로젝트의 파일은 아래의 사이클을 따른다. (만약 파일체계를 정확히 알고 싶지 않다면,, 대충 읽어보고 밑줄 표시된 부분부터 다시 읽어보자..) 파일은 일단 크게 Tracked와..

    [Spring Boot] Unit Test (단위 테스트) vs Integration Test (통합 테스트)

    TDD TDD는 Test Driven Development의 약자로 ‘테스트 주도 개발’이라고 한다. 외부의 요구 조건이 많이 바뀔 경우, 팀원이 많은 경우 등 보다 탄탄하게 코드를 짜야 하는 경우에 이러한 개발을 한다. 애초에 테스트 코드까지 2개의 코드를 짜야하니 생산성이 떨어지지만, 나중이 편해진다. 테스트 프레임워크 xUnit 가장 대중적인 테스트 프레임워크인데, 대표적인 프레임워크는 다음과 같다. JUnit - Java DBUnit - DB CppUnit - C++ NUnit - .net 당연히 Java의 테스트 프레임워크인 JUnit을 쓰겠다. 그 중 JUnit5를 쓰겠다. 이것은 Spring이 아니라 Java의 테스트 프레임워크인 것을 명심해야 한다. 이외에도 TestNG 등이 있다. Tes..