Spring Boot 3 & Security 6 시리즈: SecurityConfig 클래스 작성하기 (2편)
·
Spring/Spring Security
SpringBoot에서 Spring Security를 사용하는 방법을 알아보자📌 서론Spring Boot 3 프로젝트에서 Thymeleaf와 함께 JWT (JSON Web Token) 인증 방식을 적용했다. 일반적으로, JWT는 클라이언트 사이드 렌더링(CSR) 환경인 React, Vue, Android, iOS 앱에서 주로 사용된다. 이 방식에서 클라이언트는 인증에 필요한 정보를 담은 토큰을 사용하여 서버와 인증을 수행한다. 반면, 서버 사이드 렌더링(SSR) 환경에서는 주로 세션을 통한 인증 방식이 일반적이다. 이번 프로젝트에서는 SSR 환경에도 JWT를 적용해 본 결과, 서버가 페이지를 렌더링 하면서도 JWT를 통한 인증이 가능함을 확인했다. 지금부터 그 내용을 공유한다.Spring securit..
Spring Boot 3 & Security 6 시리즈: JWT 로그인 폼 구현 (1편)
·
Spring/Spring Security
Spring Security를 구현하기 전에 앞으로 사용할 JWT 토큰이 어떤 것인지에 대해서 알아보자 📌 서론 JWT (JSON Web Token)는 웹에서 정보를 안전하게 전송하기 위한 컴팩트하고 독립적인 방식을 제공하는 토큰이다. JWT는 세 부분으로 구성되며, 각 부분은 점(.)으로 구분된다. 아래의 링크에서 jwt 토큰을 Encoded, Decoded 해볼 수 있다. JWT.IO JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties. jwt.io 1. JWT란 Header: Header는 JWT의 메타데이터를 포함하며, 주로 두 가지 정보를 담..
@ControllerAdvice, @RestControllerAdvice - 중앙집중 예외처리
·
Spring/Spring 기초 지식
@ControllerAdvice를 사용한 중앙집중 예외처리 0. 패키지 구조 1. ErrorCode를 정의한다. Enum 타입으로 ErrorCode 클래스를 정의했다. 이렇게 관리하면 커스텀한 에러처리를 할수가 있다. 우선 나는 status, code, message를 필드로 선언했고 이 모든것들을 생성자로 받도록 설정했다. status에는 우리가 자주보는 400번대 500에러가 있고 code에는 내가 직접 지정한 커스텀 에러코드를 넣어줬다. 마지막으로 message에는 알아보기 쉽게 한글에러 메시지를 넣어줬다. import lombok.AllArgsConstructor; import lombok.Getter; import org.springframework.http.HttpStatus; /** * 커스..
스프링의 제어의 역전 (IoC, Inversion of Control)
·
Spring/Spring 기초 지식
안녕하세요 개발자 stark입니다!우리가 스프링 프레임워크를 공부하다 보면 반드시 등장하는 개념 중 하나가 바로 "제어의 역전" (Inversion of Control, IoC)입니다. 이는 스프링의 핵심 원리 중 하나로, 현대적인 소프트웨어 개발에서 매우 중요한 원칙입니다. 이번 글에서는 IoC가 무엇인지, 왜 중요한지, 그리고 스프링에서 어떻게 활용되는지를 쉽게 설명하겠습니다.  제어의 역전 (IoC)이란?기존의 프로그래밍 방식일반적으로 프로그래밍에서는 코드가 실행되는 흐름을 개발자가 직접 제어합니다. 예를 들어, 메인 함수에서 객체를 생성하고, 필요한 데이터를 전달하며, 메서드를 호출하여 작업을 수행합니다. 이러한 방식에는 다음과 같은 특징이 있습니다.사용자 중심의 흐름 제어: 코드의 흐름과 객체 ..
[Spring] 의존성 주입(DI - Dependency Injection)과 결합도 낮추기
·
Spring/Spring 기초 지식
안녕하세요. 개발자 Stark입니다.이번 포스팅은 의존성 주입에 대한 설명입니다. 기존에 작성했던 내용을 개선하여 리팩터링 하였습니다.특히 기존에는 없던 설명들을 조금 부각했으며 이해하기 쉽도록 구성해 보았습니다. 중간중간 객체 간의 결합에 대한 설명 같은 것들이 있으니 많은 도움이 되었으면 좋겠습니다.  의존성과 의존성 주입이란?의존성이란?객체 지향 프로그래밍에서 의존성은 클래스나 모듈 간의 관계를 의미합니다. 한 클래스가 다른 클래스에 의존한다는 것은 해당 클래스가 다른 클래스의 인스턴스나 메서드를 사용한다는 뜻입니다. 의존성은 클래스 간의 결합도를 나타내며, 결합도가 높으면 변경에 취약한 코드가 될 가능성이 높아집니다. 의존성 주입이란?의존성 주입(Dependency Injection)은 객체가 필..
[Spring Boot] Properties와 YAML 설정 파일 작성 가이드
·
Spring/Spring 설정
스프링부트에서 설정파일을 작성하는 방식을 살펴보자📌 서론스프링 부트는 컨벤션을 통한 설정을 지향하며, 다양한 설정 파일을 지원하여 개발자가 손쉽게 애플리케이션을 구성할 수 있도록 돕는다. Properties 파일과 YAML 파일은 스프링 부트에서 가장 널리 사용되는 설정 파일 형식으로, 각각의 장단점과 사용 용도가 있다. 올바른 설정 파일을 선택하고 효율적으로 사용하는 방법을 이해하면, 애플리케이션의 유지보수성과 확장성을 크게 향상시킬 수 있다. 1. Properties 파일 설정Properties 파일 소개Properties 파일은 key=value 형식으로 구성 정보를 저장하는 텍스트 파일이다. 스프링 부트에서는 주로 application.properties 파일을 사용하여 애플리케이션의 기본 설정..