본문 바로가기

전체 글

(41)
Spring Security를 활용한 OAuth 2.0 로그인 구현 이번 포스팅에서는 OAuth 2.0을 이용한 소셜 로그인을 소개해보려고 합니다.여러가지 소셜 사이트가 있지만, Google, FaceBook, Naver를 활용하여 소셜 로그인을 진행하려고 합니다.소셜 로그인의 경우 oauth2-client 라이브러리를 활용하여 동작이 이루어지게 되고 어떤 원리로 소셜 로그인이 가능한지 알아보도록 하겠습니다.  또한, 실제 토이프로젝트를 통해 구현된 코드로 보여드리도록 하겠습니다. 1. OAuth 2.0 이란??먼저, 간단하게 OAuth에 대해서 알아보도록 하겠습니다.예를들어, 원티드 홈페이지에 접속을 하여 회원가입 버튼을 누르게 되면 다른 소셜 사이트의 정보로 회원가입을 하게 하는 것을 볼 수 있습니다. 본인이 원하는 소셜 사이트를 선택하여 회원가입을 진행하게 되면, ..
Virtual Thread란? 이번 포스팅에서는 Virtual Thread에 대해서 소개해보려고 합니다.자바 21에서 Virtual Thread가 공식적으로 Feature 되었다는 소식을 듣고 기존 Thread와 어떤 차이점이 있고 어떻게 동작하는지 원리를 알아보도록 하겠습니다.1. Virtual Thread 소개Virtual Thread는 기존 자바 Thread와 다른 방식으로 동작하는 경량 쓰레드입니다.간단하게 기존 Thread는 OS의 Thread와 1:1 맵핑을 하여 작업을 처리하는 방식이라면, Virtual Thread는 OS의 Thread를 사용하지 않고, JVM 내부 스케줄링을 통해 맵핑이 되는 구조라서 좀 더 빠르고, 생성시 비용적인 측면에서 효율적인 장점이 있습니다. 그럼 간단하게 Virtual Thread 생성시 비..
LogBack을 활용한 Log파일 관리 개인 프로젝트를 진행하면서 EC2서버에서 Nginx를 활용하여 무중단 CI /CD를 구축하였습니다. 하지만, 배포를 하는 과정에서 EC2서버에서 가끔씩 에러가 발생하여 서버가 죽는현상이 발생하였고, 이유를 알아내기위해 배포 Shell 스크립트도 많이 보았지만, 원인을 밝혀내지 못했습니다. 로컬환경에서는 콘솔창에 올라온 에러로그를 확인하여 해결하면 되지만, EC2에서는 로그를 보지못하여 LogBack을 프로젝트에 적용하여 로그 파일을 관리하게 되었습니다. 이번 포스팅에서는 LogBack의 사용방법과 실제 EC2환경에서의 로그파일이 어떻게 관리되는지 공부해보려고 합니다. 1. Logback 1 - 1. Logback이란 간단하게 자바에서 사용되는 로깅 라이브러리는 Log4j, Logback, Log4j2가 ..
Spring Boot에서 AWS Parameter Store 사용 프로젝트를 Github에 올리게 되면, application.yml에 있는 DB 접속정보, Jwt에 사용되는 secret key와 같은 중요 정보가 모두에게 노출 될 수 있습니다. 이런 중요 정보를 노출하지 않기위해 사용하는 방식에는 jasypt 암호화 방식, Git 서브모듈 등 여러가지 방식이 있지만, 이번 포스팅에서는 AWS에서 원격으로 설정값을 제공해주는 서비스인 파라미터 스토어에 대해 포스팅 해보려고합니다. 1. AWS Parameter Store 적용 1 - 1. Parameter Store 세팅 먼저 Parameter Store을 검색해서 들어가셔서 파라미터 생성 버튼을 클릭합니다. 그 후 이름, 설명을 입력하시고, 보안 문자열을 선택합니다. 1. 이름 같은 경우에는 아래 규칙에 따라 작성해주..
Spring Security를 활용한 JWT 로그인 구현(Access Token, Refresh Token) 이번 포스팅에서는 Spring Security를 활용하여 폼 로그인 방식이 아닌 Rest Full API로 이루어진 환경에서 JWT 토큰을 이용하여 로그인 후 인증, 인가하는 방법을 공부해보려고 합니다. 1. JWT 1 - 1. JWT란? JWT는 Json Web Token의 줄임말로 Json형식으로 데이터를 주고 받는 토큰을 의미합니다. JWT는 3개의 구조로 되어있는데, 헤더(Header), 내용(Payload), 서명(Signature)로 되어있습니다. 1) 헤더(Header) : 헤더는 토큰의 유형과 서명 알고리즘이 명시됩니다. { "alg": "HS512", // 해싱 알고리즘 지정 "typ": "JWT" // 타입을 지정 } 2) 내용(Payload) : 토큰에 담을 정보를 의미하는데, 정보 ..
Spring Security를 활용한 Form Login 구현 이번 포스팅에서는 Spring Security를 활용하여 가장 기본이 되는 Form Login 방식을 구현해보려고 합니다. 1. Spring Security 기본 세팅 1 - 1. Spring Security 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-security' testImplementation 'org.springframework.security:spring-security-test' 1 - 2. Spring Security 코드 세팅 1 - 2 - 1. BCryptPasswordEncoder 설정 BCryptPasswordEncoder의 encode()를 이용하여 비밀번호를 암호화 할때 사용합니다. @Config..
Nginx를 활용한 무중단 Spring Boot CI/CD 구축 저번 포스팅에서 EC2 + Jenkins + Github를 활용하여 Spring Boot를 서버에 띄우는 CI/CD 구축해 보았습니다. https://gong-story.tistory.com/40 AWS EC2 + Jenkins + Github 활용한 Spring Boot CI/CD 구축 이번 포스팅에서는 AWS EC2서버에 젠킨스와 Github를 연동하여 Spring Boot 프로젝트가 자동 배포되도록 CI/CD를 구축해 보려고 합니다. 전 회사에서는 gitlab에 push후에 젠킨스에 들어가서 배포 버튼을 gong-story.tistory.com 혼자만의 프로젝트라면, 배포시 중단이 되더라도 사용자가 없으니 상관이 없겠지만 실제 회사에서 사용되는 서비스들이 배포를 진행할때마다 서비스가 중단이 된다면,..
CORS(Cross-Origin Resource-Sharing)란? 개발한지 4년이 되었지만, 그 동안 회사에서 SSR(Sever-side Rendering)기반으로 프론트와 백엔드를 개발하다보니 출처가 다른 환경에서 API를 호출해본적이 없어서 CORS의 개념에 대해서 전혀 모르고 있었습니다. 그러던 중 우아한 테크에서 진행하는 [10분 테크톡]에서 CORS라는 주제로 발표하는 것을 보고 추후에 프론트와 백엔드가 나뉘어진 회사에서 CORS문제를 겪을수도 있을 것 같다는 생각이 들게 되어 공부하게 되었습니다. SOP란? CORS란? CORS 해결법 SOP(Same-Origin Poicy)란? 먼저, CORS문제를 겪게되는 이유는 SOP정책 때문입니다. SOP란, 동일 출처 정책이라해서 하나의 출처에서 자원을 얻기 위해서는 동일한 출처에서 접근을 해야 한다는 정책입니다. ..