Spring 5

[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] 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