Spring Batch 시리즈를 포스팅하고 있습니다. 기준이 되는 버전은 5.x 버전입니다.1. Spring Batch 소개 - 현재 포스팅2. Job과 Step의 구조 및 생성3. Job과 Step의 실행 과정4. Job의 흐름 제어 - Flow5. FlowJob의 실행 과정6. 청크 기반 프로세싱의 구조 및 생성7. 청크 기반 프로세싱의 진행 과정8. Flat File, JSON 형식 파일 읽기 및 쓰기9. DB 데이터 읽기 및 쓰기10. Step의 예외 제어하기(스킵, 재시도)11. 배치 작업 확장하기 배치 애플리케이션 Batch 라는 단어를 영영사전에서 찾아보면 "a set of jobs that are processed together on a computer" 라고 설명한다. 컴퓨터에서 함께 ..
[Spring Security] 예제 프로젝트4. 토큰 기반 인증 구현 2023.10.18 - [Spring/Security] - [Spring Security] 예제프로젝트3. 세션 기반 인증과 토큰 기반 인증 [Spring Security] 예제프로젝트3. 세션 기반 인증과 토큰 기반 인증 2023.09.19 - [Spring/Security] - [Spring Security] 예 cares-log.tistory.com 위 포스팅과 이어집니다. 목표 이번에는 리소스 별로 권한을 설정하고 해당 권한에 따라 인가하는 기능을 구현해볼 것이다. 이 때 권한은 동적으로 변할 수 있음을 고려하여 구현해볼 것이다. Spring Security 6.x 버전 부터는 `AuthorizationFilter`를 통해 인..
[Spring Security] 예제프로젝트3. 세션 기반 인증과 토큰 기반 인증 2023.09.19 - [Spring/Security] - [Spring Security] 예제 프로젝트2. API 기반 커스텀 인증 구현 [Spring Security] 예제 프로젝트2. API 기반 커스텀 인증 구현 2023.09.16 - [Spring/Security] - [Spring Security] 예제 프로젝트1. cares-log.tistory.com 현재 포스팅은 위 포스팅에서 이어집니다. 목표 이전 포스팅에서 어떤 방식으로 토큰 기반 인증을 수행할지 정해보았다. 이를 바탕으로 실제 구현을 해보자. 기본적으로 Spring Security에서는 인증에 성공하면 회원의 정보를 세션을 통해 관리한다. 인증 성공 ..
[Spring Security] 예제 프로젝트2. API 기반 커스텀 인증 구현 2023.09.16 - [Spring/Security] - [Spring Security] 예제 프로젝트1. 목표 및 기본 구현 [Spring Security] 예제 프로젝트1. 목표 및 기본 구현 지금까지 정수원님의 Spring Security 강의를 보며 Spring Security 포스팅을 cares-log.tistory.com 현재 포스팅은 위 포스팅에서 이어집니다. 목표 토큰 기반 인증을 구현하기 위해 세션 기반 인증과 토큰 기반 인증이 어떤 차이점이 있는지를 분석한 후, 이 차이점을 바탕으로 어떤 정책을 가지고 토큰 기반 인증을 구현할 것인지 정리해볼 것이다. 세션 기반 인증 세션 기반 인증은 위 그림처럼 사용자의..
[Spring Security] 예제 프로젝트1. 목표 및 기본 구현 지금까지 정수원님의 Spring Security 강의를 보며 Spring Security 포스팅을 작성해 왔다. 하지만 해당 강의는 5.x 버전 대의 내용을 다루고 있었고, Spring Boot 3(Framework 6.x)가 출시되면서 Spring Security 역시 cares-log.tistory.com 현재 포스팅은 위 포스팅에서 이어집니다. 목표 이번 포스팅에서는 API로 로그인을 할 수 있도록 인증 필터를 구현할 것이다. Spring Security에서 구현해 놓은 기존의 Form Login 인증 프로세스를 분석한 후, 기존의 클래스들을 사용할 수 있다면 적절히 사용하고 정말 필요한 부분만 커스터마이징 할 것이다. 이전에 ..
지금까지 정수원님의 Spring Security 강의를 보며 Spring Security 포스팅을 작성해 왔다. 하지만 해당 강의는 5.x 버전 대의 내용을 다루고 있었고, Spring Boot 3(Framework 6.x)가 출시되면서 Spring Security 역시 6.x 버전이 출시가 되었고, 5.x 버전과는 변경점이 많아졌다고 생각한다. 따라서 6.x 버전을 기준으로 실전에서 요구될법 한 사항들을 구현해볼 것이다. 목표 1. API를 통해 이메일과 비밀번호로 인증 2. 토큰으로 클라이언트 인가 3. 리소스별 동적으로 권한 설정 4. 메서드별 권한 설정 간단하게 회원 가입 API를 만들고, API 기반으로 이메일과 비밀번호를 통해 로그인하도록 구현해볼 것이다. 이후 세션 기반으로 회원의 인증 정보..
지금까지 Spring Security가 제공하는 기능들을 커스텀하게 설정하기 위해서 `WebSecurityConfigurerAdapter`를 구현하는 방식을 사용했었다. 하지만 이 방식은 Spring Security 5.7.0 버전 부터 컴포넌트 기반의 설정을 장려하기 위해 Deprecated 되었다. 따라서 Spring Security 블로그에서 `WebSecurityConfigurerAdapter`를 구현하는 방식을 대체할 수 있는 방법을 잘 작성해 놓았다. (스프링 블로그 참고) 기존 방식은 구현 클래스에서 각 메서드를 구현하는 방법으로 설정을 구성했기 때문에 하나의 컴포넌트에서 모든 설정을 다루는 방식이었지만, 이제는 스프링 빈으로 등록하는 방식으로 변경되었기 때문에, 여러 컴포넌트로 설정을 분산..
인가란 사용자가 특정 리소스나 기능에 접근할 수 있는 권한을 부여하는 프로세스를 말한다. 이전에 Spring Security에서는 인증 작업시 유저에게 권한을 부여하는 과정이 있었고, 추후 해당 유저가 리소스에 접근할 때 해당 리소스에 접근 가능한 권한인지 확인하는 것을 보았었다. 이번에는 이 과정에 대해서 자세하게 살펴보고자 한다. 우선 Spring Security에서 제공하는 권한 검증 방법은 3가지가 있다. 1. 웹 계층 검증: URL 요청에 따른 화면 단위의 레벨 보안 2. 서비스 계층 검증: 메서드 같은 기능 단위의 레벨 보안 3. 도메인 계층 검증: 객체 단위의 레벨 보안 지금까지 인가 설정을 하면서 다뤘던 것은 웹 계층 검증에 대해서였다. 나머지 기능들은 추후에 알아보도록 하고, 이번에도 웹..
지금까지 인증과 관련해서 커스텀 설정을 하는 방법을 시작해서 세부적으로 Spring Security에서 어떻게 인증 정보를 다루는지(`Authentication` 인터페이스), 이 인증 정보는 어디에 저장(`SecurityContext`)하는지, 인증 객체 저장소는 어떻게 초기화 되는지 등의 기본 아키텍처들을 모두 배웠다. 여기서는 Spring Security에서 어떻게 인증을 수행해서 `Authentication` 객체를 만들어 내는지에 대해 구조와 함께 알아보고, 전체적으로 인증 과정들을 정리해보고자 한다. 인증 관리 - AuthenticationManager `UsernamePasswordAuthenticationFilter` 클래스의 `attemptAuthentication()` 메서드 부터 살펴..
인증 객체 - Authentication 이전에 기본 인증 API에 대해 다뤘을 때 `Authentication`의 구현체가 자주 등장했었다. 이제 이 인터페이스를 상세하게 살펴보자. `Authentication`은 이름 그대로 Spring Security 전역에서 사용자의 인증 정보를 다룰 때 사용하기 위한 역할들을 추상화 해놓았다. 인증 시 `Authentication`을 구현한 객체를 `SecurityContext`에 저장하고, 인증 정보가 필요할 경우 `SecurityContext`에서 `Authentication` 객체를 꺼내어 각종 정보를 토대로 보안 로직을 수행하게 된다. 6개의 추상 메서드가 정의되어 있는데 한번 살펴보자. package org.springframework.security...