Backend/JAVA 7

[Springboot] CustomException 처리

앞서API 개발에서 예외 처리는 클라이언트에게 발생한 오류의 원인을 명확히 전달하는 데 중요하다. 이를 통해 클라이언트는 문제를 신속하게 파악하고 해결할 수 있다. 예를 들어, 404 오류는 URI 입력 오류나 API 삭제 등 여러 원인으로 발생할 수 있으며, 이 경우 클라이언트에게 "잘못된 URI" 또는 "API가 삭제되었습니다"와 같은 구체적인 정보를 제공하는 것이 필요하다.이번엔 Custom Exception 처리를 통해 이러한 오류 메시지를 일관되게 제공하는 방법에 대해 알아보자.패키지 및 클래스 추가위와 같이 패키지 및 클래스를 추가하자.CommonDtopackage com.hkhong.study.global.dto;import com.hkhong.study.global.exception.Cus..

Backend/JAVA 2024.09.24

spring-security + JWT 이용 로그인(4) - 토큰 이용 API 호출

앞서토큰을 이용하여 유저정보를 가져오는 API를 만들어보자JwtUtil 수정//클레임 추출public Claims extractClaims(String token){ return Jwts.parser() .setSigningKey(secretKey) //.parseClaimsJwt(token) .parseClaimsJws(token) .getBody();}클레임 추출하는 부분에 parseClaimsJwt -> parseClaimsJws 로 변경, 서명이 포함된 JWT를 사용할 때 parseClaimsJws를 사용해야 합니다코딩중 해당 메서드 사용시 에러나는걸 발견했다.. 수정해주자 UserControllerpackage ..

Backend/JAVA 2024.09.10

spring-security + JWT 이용 로그인(3) - 로그인 구현

앞서spring-security를 활용하여 로그인 기능을 구현해보자. 패키지 및 클래스 추가로그인 API 구현을 위해 각 레이어들을 추가시키도록 하자.controller패키지 -> AuthControoler.classservice패키지 -> AuthServicedto 패키지 -> userDto.classJwtAuthenticationFilter 수정package com.hkhong.study.config;import com.hkhong.study.util.JwtUtil;import jakarta.servlet.FilterChain;import jakarta.servlet.ServletException;import jakarta.servlet.http.HttpServletRequest;import jaka..

Backend/JAVA 2024.09.10

spring-security + JWT 이용 로그인(2) - spring-security 설정

앞서전에 spring-security 란 무엇인가 또 로그인 아키텍처 순서에 대해 알아보았다. 이번엔 코드를 작성하여 구현해 보도록 하자. 전에 만들어 놓았던 JWT 생성 코드또한 같이 사용할 예정이다. 의존성 추가dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-security' ...}스프링 시큐리티를 사용하기 위해 위 코드를 추가해 의존성을 추가함패키지 및 클래스 추가 config 패키지 추가JWT필터인 JwtAuthenticationFilter 클래스 추가spring-security 관련설정인 SecurityConfig 클래스 추가 JwtAuthenticationFilter @Componen..

Backend/JAVA 2024.09.09

spring-security + JWT 이용 로그인(1) - spring-security란

앞서JWT토큰을 만드는 서비스를 만들어봤고, 이번엔 spring-security 를 이용해서 토큰로그인을 구현해 보도록 하자. 스프링 시큐리티 사용 이유웹 애플리케이션과 서비스의 사용이 증가하면서 보안 요구사항이 더 중요해짐 또한 데이터의 중요성이 커지면서 고객 데이터의 효율적인 관리 능력 또한 중요해지고 있기에, CSRF 방어, XSS 방어, 세션 관리 등 다양한 보안 요구사항이 필요함스프링 시큐리티 제공 기능인증(Authentication)사용자의 신원을 확인하는 기능입니다.폼 로그인: 기본 로그인 폼을 제공하고, 사용자 인증을 처리합니다.OAuth2 / OIDC: 소셜 로그인, 외부 인증 제공자와의 통합을 지원합니다.Basic Authentication: HTTP 기본 인증을 지원합니다.JWT (J..

Backend/JAVA 2024.09.09

JWT 토큰 만들기(2)

앞서앞서 설명한 내용을 토대로 자바를 통해 토큰을 생성하는 서비스를 만들어 보도록 하자.  프로젝트 생성Spring Boot + Gradle 프로젝트 생성Gradle 추가implementation 'io.jsonwebtoken:jjwt:0.9.1' // JWT 라이브러리JWT 토큰 관련 클래스 생성util 패키지 및 jwt토큰을 관리하는 JwtUtil 클래스를 생성한다.JWT 토큰 생성 소스전체코드는 아래와 같고, 코드별 역할을 알아보도록 하자. package com.hkhong.study.util;import io.jsonwebtoken.Claims;import io.jsonwebtoken.Jwts;import io.jsonwebtoken.SignatureAlgorithm;import lombok.Re..

Backend/JAVA 2024.09.04

JWT 토큰 만들기(1)

앞서웹개발자라면 한번쯤은 꼭 들어봤을 단어다. 첫 회사 입사 후 유지보수를 진행하면 대수롭지 않게 넘겼었지만 동작방식에 큰 역할을 차지하고 있는 친구다.갑자기 머릿속에 떠오른 개념이지만 생각난김에 정리해보도록 한다 알고 있던 개념이지만 정리해보자.JWT 란?JWT 토큰은 JSON Web Token의 줄임말임. 사용자 인증과 정보를 안전하게 전달하기 위해 사용됨.끝JWT 사용이유 및 동작방식 Session 과거 세선 또는 쿠키를 통한 인증의 한계를 해결하기 위해 등장, 전통적인 세션 기반 인증 방식에서는 서버가 각 사용자의 세션을 관리해야 했음. 이 경우, 사용자가 많아지면 서버의 부담이 커지고, 확장성 문제가 발생함 그림과 같이 로그인 정보를 sever 에서 관리 보관함 JWT인증 정보를 담고 있는 토..

Backend/JAVA 2024.08.26