[개발 일기] 2025.05.05 - 비밀번호 암호화 (Feat : BCryptPasswordEncoder)
·
개발 일기
💡 개요 오늘은 회원의 비밀번호를 암호화하는 로직에 대해 정리해 보자. 🛠️ 비밀번호 암호화 보통 회원의 정보를 담고 있는 데이터베이스의 테이블에선 비밀번호를 단방향 암호화를 진행한 후, 저장된다. 그렇게 때문에 아무리 실제 DB에 접근할 수 있는 개발자라고 해도, 회원의 비밀번호는 알 수 없다. 이러한 이유 때문에 비밀번호를 찾을 때 사용중이던 비밀번호를 알려주는 것이 아니라 아예 비밀번호를 재설정하는 것 이다. DB도 찐 비밀번호를 모르기 때문! 그런데 회원이 로그인을 위해 입력하는 비밀번호는 평문아닌가? 회원이 입력한 평문 형태의 비밀번호와 DB에 저장된 암호화된 비밀번호를 어떻게 비교하는 거지? ⚙️ 단방향 해시 Spring에서 사용하는 대표적인 단방향 해시 기술은 BCryptP..
[개발 일기] 2025.05.04 - JWT 페이로드 종류
·
개발 일기
💡 개요 오늘은 JWT 토큰의 한 부분인 페이로드의 종류에 대해 정리해 보자. 🛠️ PayLoad(페이로드) 페이로드는 JWT 토큰의 두 번째 영역으로, 토큰에 담을 실제 정보를 포함한다. 이 정보는 클레임(Claim)이라는 형태로 표현되며, 클레임은 크게 세 가지로 나뉜다. ⚙️ 등록된 클레임 등록된 클레임은 JWT 사양(RFC 7519)에 따라 표준적으로 정의된 필드로, 서버와 클라이언트가 공통으로 이해할 수 있도록 널리 사용된다. 클레임설명issIssuer: 토큰을 발급한 주체 (예: 인증 서버의 도메인)subSubject: 토큰의 주제, 주로 사용자 ID 등 식별자audAudience: 토큰의 대상, 즉 이 토큰을 사용할 시스템 또는 서비스expExpiration Time: 토큰의 만료..
[개발 일기] 2025.05.03 - JWT 말고 인증에 사용할 만한 기술
·
개발 일기
💡 개요 오늘은 JWT 말고 인증에 사용할 만한 기술이 뭐가 있는지 정리해 보자. 🛠️ HMAC HMAC을 사용하는 이유는 백엔드 서버가 HTTP 요청을 받았을 때, 해당 요청이 신뢰할 수 있는 요청인지 판별할 때 사용되는 기술이다. 사실 따지고 보면 이 기술은 완벽하게 JWT처럼 인증에 사용되는 기술은 아니다. 말 그대로 해당 요청이 우리가 알고 있는 클라이언트에서 온 것이 맞는지 검증하는 기술이기 때문이다. 뭐 어쨌든 HMAC을 사용해도 보안은 강화할 수 있으니까..! 요청 방식은 간단하다. 클라이언트가 요청에 서명을 추가하고, 서버가 이를 검증하는 방식이다. 만약 아래와 같은 HTTP 요청 메시지가 있다고 하자. POST /api/orderbody: {"itemId": "123", ..
[개발 일기] 2025.05.02 -GraphQL, gRPC
·
개발 일기
💡 개요 오늘은 API 아키텍처 기술인 GraphQL, gRPC에 대해 정리해 보자. REST는 어제 정리했으니까 생략..! 🛠️ GraphQL GraphQL은 페이스북에서 개발한 API를 위해 쿼리 언어를 사용하는 기술이다. REST의 단점을 극복하고자 2015년에 처음으로 공개되었다. GraphQL의 특징은 다음과 같다. 모든 요청은 /graphql 이라는 하나의 엔드포인트에서 처리한다. REST의 경우엔 기능에 따라 URL을 다르게 분리하지만, GraphQL은 그럴 필요 없다. 클라이언트가 원하는 데이터를 정의하면, 서버는 정확하게 그 데이터만 전달하는 API 방식이다. 불필요한 데이터는 조회하지 않을 수 있다.query { user(id: "1") { name email ..
[개발 일기] 2025.05.01 - ws vs wss (Feat: Nginx)
·
개발 일기
💡 개요 오늘은 일반적인 웹 소켓인 ws와 SSL이 적용된 웹 소켓인 wss에 대해 정리해 보자. 🛠️ ws vs wss 클라이언트와 서버간의 통신은 기본적으로 HTTP를 사용한다. 하지만 채팅같은 양방향 통신이 필요한 경우엔 웹 소켓 통신이 사용된다. 웹 소켓 연결이 성립되면 기존 HTTP 방식처럼 클라이언트가 요청하고 서버가 응답하는 구조를 벗어나, 서버도 클라이언트에게 실시간으로 데이터를 전송할 수 있게 된다. ws는 일반 웹 소켓 연결 방식으로, 내부 데이터가 암호화되지 않은 상태로 전송되기 때문에 보안에 취약할 수 있다. 하지만 wss의 경우, HTTPS 통신과 동일하게 내부 데이터를 암호화하고 메시지를 주고 받기 때문에 보안상 더 안전하다. Nginx를 사용해 SSL을 설정하면..
[개발 일기] 2025.04.30 - REST
·
개발 일기
💡 개요 오늘은 서버 개발에 사용되는 아키텍처인 REST(Representational State Transfer)에 대해 정리해 보자. 🛠️ REST REST란 Representational State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 것을 의미한다.이를 풀어서 설명하면 다음과 같다. HTTP URI을 통해 어떤 자원인지 명시HTTP Method을 통해 해당 자원에 대한 CRUD작업이 무엇인지 명시HTTP Body를 통해 자원의 구체적인 정보 명시 위 세 가지가 REST의 구성 요소이기도 하다.자원을 나타내는 HTTP URI행위를 나타내는 HTTP Method표현을 나타내는 HTTP Body 👍 REST 장점 REST는 HTTP 프로토콜을 기반으..