
부트캠프에서 미니 프로젝트를 진행하게 되었는데 회원 기능을 맡게 되었다 처음 진행해보는 스프링 프로젝트라 긴장은 되지만 민폐 끼치진 않으려고 한다.. JWT + OAuth2를 사용하여 로그인을 구현하는 것이 목표이다 JWT는 물론이고 OAuth2도 처음 사용하는 것

회원가입과 로그인을 구현하기 위해 엔티티를 먼저 구성했다 ERD Cloud 우선 JWT만 이용해서 해보기로 했지만 테이블에는 소셜 관련 필드로 추가해두었다 JWT 토큰은 ACCESS, REFRESH 두 개로 관리하기로 했다 아직은 DB로 토큰 저장소를 관리하지만 나

기능을 구현하기 전에 기능에 필요한 API 리스트를 작성해보기로 했다우리 서비스는 일반 로그인과 소셜 로그인을 지원한다회원가입: POST /api/auth/signup로그인: POST /api/auth/login로그아웃: POST /api/auth/logout구글 로그

로그인을 구현하기 전에 스프링 시큐리티 설정을 잡아줄 것이다JWT를 사용하기 때문에 csrf, formLogin, httpBasic 방식을 모두 비활성화JWT 방식은 세션 설정을 STATELESS로 해줘야 한다로그인과 회원가입은 권한 없이 접근 가능해야 하므로 perm

기능들을 구현하면서 토큰에 대한 작업이 반복되는 것을 느꼈다그래서 토큰 검증, 삭제, 저장 같은 메서드들을 한 곳에서 관리해서 중복을 좀 없애고 싶었다TokenService를 만들어서 토큰을 관리해보자이제 토큰과 관련된 작업들은 TokenService를 사용하도록 바꿔

로그아웃 로직은 간단하게 이루어진다사용자가 로그아웃 버튼을 누르면 Refresh 토큰을 DB에서 삭제해주어야 할 것이다스프링 시큐리티에는 기본 LogoutHandler 인터페이스가 있다이 인터페이스를 커스텀하여 로그아웃을 구현할 것이다로그아웃의 기능은 토큰을 삭제하는

OAuth2를 연결하기 전에...예외 메시지가 너무 중구난방이고 내가 영어로 쓴 것도 있고 한글로 쓴 것도 있었다얼마 안되지만 예외 메시지를 좀 통합해서 한글로 적고 싶었다전 포스트에서 TokenService에 InvalidTokenException을 사용하였다이 클래
우리 프로젝트에 소셜 로그인을 추가할 것이다 (구글, 네이버, 카카오)먼저 소셜 로그인 과정을 알아보자인증 요청: 사용자가 '카카오로 로그인' 버튼을 누르면 우리는 카카오 인증 서버로 사용자를 보낸다인증 및 권한 부여: 사용자는 카카오 서버에서 로그인하고, 우리 앱이
구글, 카카오, 네이버 소셜 로그인을 진행하기 위해서는 각각 앱 등록 페이지에 들어가서 키 발급 등의 작업을 해주어야 한다카카오 OAuth2네이버 OAuth2구글 OAuth2앱 등록을 모두 마쳤으면 인텔리제이로 돌아와 application.yml에 oauth2 설정을
구글, 네이버, 카카오는 각기 다른 형식의 JSON으로 사용자 정보를 반환한다 이 정보를 일관되게 처리하는 것이 핵심이다 네이버 구글 카카오 JSON 공통 처리 OAuth2UserInfo 공통 인터페이스를 만들고 각 소셜 서비스 별 구현체를 만들 것이다 소셜 서

소셜 로그인이 성공적으로 완료됐다면 우리 서비스 자체 JWT를 생성해서 부여해야 한다 로그인 성공 로직 구현 OAuth2LoginSuccessHandler 자체 JWT를 생성하고, 생성된 토큰을 응답 헤더와 쿠키에 담아 클라이언트에게 전달한다 최종적으로는 사용자를 우리

로그인은 화면이 있어야 로그인 할 맛이 나기 때문에 화면을 구현하려고 한다 디폴트 OAuth2 로그인 화면이 구리기도 하고.. 프론트에서 요청 보내는 것도 해볼 겸.. 무엇보다 프로젝트이기 때문에 완성도 측면에서 프론트를 구현하기로 하였다 아무래도 백엔드 개발자
현재 MySQL 기반의 리프레시 토큰 저장소는 자동으로 삭제되는 기능이 없다 리프레시 토큰은 만료시간이 다 되면 DB에서도 삭제해주어야 한다 Redis를 사용하면 크게 손 들이지 않고 간단하게 자동으로 관리할 수 있다 Redis 적용 의존성 주입 Redis를 사용하

각 기능의 API가 많아지다 보니 API 문서화를 위해 스웨거를 사용하기로 하였다그래서 오늘은 스웨거 문법도 배울 겸 알아보겠다실제 화면과 비교하면서 보는게 이해하기 쉽다@Tag(name = "Authentication", description = "인증 관련 API"

회원가입을 할 때나 로그인을 할 때 사용자가 이상한 값을 넣지 않도록 막아주는 작업이 필요하다아이디의 최소/최대 길이를 정한다던가 비밀번호의 조합은 어떻게 해야 한다던가..Validation을 적용하는 것은 간단하다우리는 회원가입과 로그인 할 때 DTO를 사용한다DTO
프로젝트명: TechPost (테크 뉴스 & 개발 커뮤니티)한줄 소개: 여러 곳에 흩어진 기술 블로그 뉴스를 크롤링하여 한곳에서 모아보고, 개발자끼리 소통할 수 있는 커뮤니티 서비스개발 기간: 2025.12.5 - 2025.12.17개발 인원: 백엔드 7명 (본인 역할