전체 글 8

[CS] 디자인 패턴의 개념

디자인 패턴프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관게 등을 이용하여 해결할 수 있도록 하나의 '규약' 형태로 만들어 놓은 것1. 싱글톤 패턴(singleton pattern)하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴 - 원래는 하나의 클래스에 여러 인스턴스 만들기 가능- 보통 데이터베이스 연결 모듈에 사용 ( createConnection )- 하나의 인스턴스를 만들고 이를 다른 모듈들이 공유하며 사용 - 인스턴스 생성 비용이 줄어드는 장점- 의존성이 높아진다는 단점 자바에서의 싱글톤 패턴- 중첩 클래스를 이용해 만드는 방법이 대중적 MySQL의 싱글톤 패턴- Node.js에서 MySQL DB 연결 시- DB연결 인스턴스 정의- 다른 모듈 A,B 에서 해당 인스턴스 기반 쿼리..

CS 2025.03.14

[AWS] AWS 개발자님 초청 세미나를 듣고 나서

오늘은 학교에서 아마존 미국 본사 AWS 이종현 개발자님의 초청 세미나가 열렸다. 1시간 정도 진행되었던 세미나였는데, 재미있게 들을 수 있었고 이에 대해 정리해 보려고 한다. AWS EC2?EC2는 서버 임대 서비스로 전세계적으로 이용되고 있다.주로 서버, 네트워크, 시큐리티에 신경을 쓰고 있다고 하셨다. - 가상 서버 제공- 필요에 따라 서버 용량을 늘리거나 줄일 수 있다- 사용한만큼만 지불- 보안기능 제공- 다양한 인스턴스 유형- 스토리지 옵션 - ebs, local storage- 고성능 네트워크 기능- 모니터링 기능 서버 타입General (Intel, AMD, Gravition) Accelerated, Network/Storage optimized, High performance, Mac in..

AWS 2025.03.05

[Spring] JWT의 개념과 구조

서버가 클라이언트의 인증을 확인하는 방식에는 대표적으로 세션, 토큰 ,쿠키 방식이 있다.오늘은 JWT에 대해 알아보도록 하자JWT (JSON Web Token)인증에 필요한 정보들을 암호화시킨 JSON 토큰이다.  JWT는 헤더, 페이로드, 시그니처로 이루어져있다.각 부분을 base64로 인코딩해서 .(마침표)로 연결하면 우리가 아는 JWT가 된다.  1. 헤더(Header)- alg : 서명 암호화 알고리즘  (서명 값을 만드는데 사용되는 알고리즘)헤더 + 페이로드 + 서버의 시크릿키를 해당 암호화 알고리즘에 넣고 돌리면 서명 값이 나온다. - typ : 토큰 유형 (언제나 JWT가 들어간다.)  2. 내용(Payload)다음은 Base64로 디코딩해서 나타는 JSON형식 정보들이다.토큰에 담긴 사용자..

Spring/JWT 2025.03.03

[Spring] JWT 리팩토링 #1

전 프로젝트에서 JWT 기반 인증 방식을 구현했다.하지만 코드를 다시 뜯어보면서 리팩토링이 필요한 부분들이 눈에 보여 이를 시작해보려고 한다.리팩토링이 필요한 부분1. JWT기반으로 적용할 것이기 때문에 formLogin, httpBasic을 명확히 disable 해주도록 하겠다.2. 현재 로그인 방식은 Spring Security를 잘 이용하지 못했기 때문에 바꾸어주겠다. 현재 코드의 유저 동작 과정 1. 로그인을 하면api/users/login 컨트롤러로 가서 서비스에서 이메일을 기준으로 DB 회원 정보의 비밀번호와 비교하여일치한다면 Access Token과 Refresh Token을 생성해준다. 2. 그럼 응답으로 AccessToken이 온다. 3. 프론트에서는 해당 응답을 받아 세션 스토리지에 저..

Spring/Refactoring 2025.03.02

[Spring] Spring Security 개념과 동작

Spring Security란?Spring 기반의 애플리케이션의 보안(인증, 인가 등)을 담당하도록 도와주는 스프링의 하위 프레임워크 인증과 인가1. 인증 (Authentication)인증은 사용자의 신원을 입증하는 과정이다. (본인이 맞는지 확인한다.) 2. 인가 (Authorization)인가는 사이트의 요청 자원에 접근할 수 있는 권한을 가지고 있는지 확인하는 과정이다. Spring Security의 동작 과정- 폼 로그인 방식 + Spring Security1. 사용자가 form을 통해 로그인 정보(ID/PW)를 담은 요청을 보낸다. 2. AuthenticationFilter에서 요청을 받아 수신된 요청에서 사용자 이름과 비밀번호를 추출한다. 3. 추출된 사용자의 자격 증명을 기반으로 Userna..

Spring/JWT 2025.02.28

[Spring] OAuth 2.0 로그인 Refresh Token 도입기 (1)

전 글에 기초하여 OAuth 2.0의 로그인 구현을 완료했다.하지만 Access Token만으로 로그인을 구현했기 때문에 Refresh Token을 도입해보려고한다.  Refresh Token 이란? Access Token을 재발급할 때 사용하는 토큰이다. 기본적으로 Access Token은 API 통신을 할 때 사용하는 키이기 때문에 이를 탈취당한다면 문제가 된다. 따라서 Access Token의 만료기간을 짧게 두어, 주기적으로 Refresh Token을 통해 Access Token을 재발급해주고 피해를 최소화 해주는 것이다. Refresh Token의 만료기간은 보통 Access Token보다 길다.현재 프로젝트의 구현 - OAuth 로그인이 성공적으로 완료된다면, 쿠키를 통해 Access Toke..

Spring/OAuth 2.0 2025.02.27

[Spring] OAuth2 클라이언트 JWT 로그인 기본 세팅

오늘은 로그인 구현을 위한 로그인 설계 방식과 세팅을 해보려고 한다. 해당 로그인 구현을 위해서는 세가지 방식이 있다.1. 프론트에 모든 책임을 준다.2. 프론트 + 백엔드에서 책임을 나눠가진다.3. 백엔드에 모든 책임을 준다.나는 백엔드에 모든 책임을 주어 로그인을 구현하는 방식으로 진행해보겠다. 동작 설계1. 하이퍼링크를 통해 로그인을 진행2. 외부 로그인 페이지 요청3. 외부 로그인 페이지 로그인 진행4. Authorization Server에서 Authorization code 발급5. Authorization code로 Access token 요청6. 발급받은 Access token을 통해 Resource Server에 유저 정보 요청 후 획득7. JWT 발급 (쿠키 방식 발급) 로그인 후에 A..

Spring/OAuth 2.0 2025.02.26

[Spring] OAuth 2.0 개념과 동작 방식

이전 프로젝트에서 Spring Security와 JWT를 활용한 로그인 기능을 구현하면서 백엔드 유저 관리에 흥미를 느꼈다. 그 당시 OAuth2을 통한 소셜 로그인도 꼭 한번 구현해보고 싶었는데, 이번에 직접 적용해보면서 이를 정리해보려고 한다. 오늘은 OAuth의 개념에 대해 말해보려고 한다.  1. OAuth의 개념OAuth는 인증을 위한 개방형 표준 프로토콜로, 사용자가 비밀번호를 직접 제공하지 않고도 제3자 클라이언트(우리의 서비스)에 자신의 정보에 대한 접근 권한을 안전하게 위임할 수 있도록 한다. 이를 통해 많은 서비스는 외부 소셜 계정(구글, 페이스북, 카카오 등)을 활용한 간편 회원 가입 및 로그인 기능을 제공한다.  2. OAuth 2.0의 구성 요소 - Resource Owner일반적..

Spring/OAuth 2.0 2025.02.25