CoinToZ 프로젝트 - 로그인 기능 구현 이번 CoinToZ 프로젝트에서 저는 로그인 기능을 담당하게 되었습니다. 사용자 인증 및 권한 관리, 소셜 로그인 통합을 목표로 진행한 내용을 정리하였습니다. 1. User 엔티티 생성 User 엔티티는 사용자 정보를 관리하는 핵심 클래스입니다. 사용자 로그인 정보, 소셜 로그인 정보, 업비트 API 통합 ...
Redis를 활용한 JWT 토큰 관리 "CoinToZ" 프로젝트에서 JWT와 Redis를 활용한 로그인 구현을 기록합니다. 1. JWT는 무엇인가? JWT(JSON Web Token)는 클라이언트와 서버 간에 안전하게 정보를 주고받기 위한 토큰 기반 인증 방식입니
1. 커스텀 필터 구현 Spring Security에서는 기본적으로 폼 기반의 UsernamePasswordAuthenticationFilter를 통해 로그인 요청을 처리합니다. 하지만 REST API를 사용한 인증에서는 JSON 형식으로 로그인 데이터를 전달해야 하는 경우가 많습니다. 이때 기본 필터를 그대로 사용할 수 없기 때문에, 커스텀 필터를 구현...
OAuth 2.0 로그인: 왜 필요할까요? 온라인 서비스의 사용자 인증 및 권한 부여의 문제점 온라인 서비스가 발전함에 따라 사용자 인증과 권한 부여는 중요한 이슈가 되었습니다. 전통적으로 사용자 이름과 비밀번호를 통해 인증하는 방식은 아래와 같은 문제를 가지고 있어요. 보안 위험성: 비밀번호는 쉽게 유출될 수 있으며, 보안상 취약합니다. 사용자 편의...
1. 의존성 추가 Spring Boot에서 소셜 로그인을 구현하기 위해서는 spring-boot-starter-oauth2-client를 추가해야 합니다. 이 의존성을 추가하면 기본적인 OAuth2 클라이언트 기능을 사용할 수 있습니다. 2. DefalutOAuth2User를 상속한 User 클래스 - CustomOAuth2User OAuth2 로그인...
Spring Security 설정: SecurityConfig 클래스 Spring Security는 애플리케이션의 인증 및 권한 부여를 관리하는 강력한 도구입니다. 이번 포스트에서는 Spring Security의 설정 파일인 SecurityConfig 클래스를 구현하
매번 인증이 필요한 api 호출 시 헤더에 토큰을 담는게 번거로움.중간에 코드 변경 시 전부 변경해줘야 하는 등 유지보수 어려움.✔️ moment를 이용하여 로그인 해서 받아온 accessToken의 만료 시간과 현재 시간의 차이를 통해 토큰이 만료되었는지 체크 ✔️
처음에는 accessToken과 refreshToken을 응답 헤더로 내려주고, 클라이언트에서 JS로 직접 쿠키에 저장하는 방식으로 구현했습니다. 이 방식은 간단하지만 XSS에 취약했습니다. 이를 개선하기 위한 인증 구조 리팩토링을 진행하게 되었습니다. 기존 인증 구
React, Spring Boot, Nginx 조합으로 프론트엔드와 백엔드가 분리된 구조의 프로젝트를 구성하였다. 전체 구성은 다음과 같다:프론트엔드: React (Nginx로 정적 리소스 서빙), 도메인: cointoz.store백엔드: Spring Boot (Doc