이번글에서는 Spring Security의 JWT Authentication에 대해 알아보도록 하겠습니다. 1. JWT Authentication이란? digitally signed된 token을 전달해 사용자를 인증하는 방식입니다. 이때 사용되는 token을 JSON Web Token(JWT)이라고 하며, 이는 apps 간의 data를 transmit하는데 compact하고 safe한 방법을 제공합니다. 1-1) login process login process는 다음과 같습니다. • client는 Auth Server에 로그인을 합니다. 이때 Auth Server는 application server 내에 위치할 수도 있으며, facebook, goole과 같은 제 3자가 될 수 도 있습니다. • Au..
이번글에서는 Spring Security의 Form Based Authentication에 대해 알아보도록 하겠습니다. 1. Form Based Authentication이란? web application이 작성한 HTML 페이지에 credentails 정보를 입력해 사용자를 인증하는 방식입니다. HTTP Basic Auth와 달리 사용자가 입력한 credential data는 POST 방식으로 web server에 전달되며, 전달된 form data를 사용해 인증을 구현하는 mechanism은 web application이 responsible을 가지게됩니다. 1-1) login process login process는 다음과 같습니다. • cleint가 접근이 제한된 GET /home request를..
이번글에서는 Spring Security의 HTTP Basic Authentication에 대해 알아보도록 하겠습니다. 1. HTTP Basic Authentication이란? 특정 resource에 대한 접근을 요청할때 브라우저가 사용자에게 username과 password를 확인해 인가를 제한하는 방법입니다. 1-1) process 전체적인 process는 아래와 같습니다. • 접근이 제한된 GET /home request를 client가 요청합니다. • server는 401 Unauthorized 에러와 함께, username과 password를 요청합니다. • browser는 사용자에게 username과 password를 입력받아 다시 동일한 GET /home resource를 요청합니다. • 이..
이번글에서는 Spring Security의 Authorities와 Role에 대해 알아보도록 하겠습니다. 1. Authorities & Role Srping Security에서 Authorities와 Role은 인가된 사용자들에게 부여된 권한들을 표현하는데 사용됩니다. 차이점으로는 Authorities는 기능 단위의 permission을 의미하며 작명 규칙은 따로 존재하지 않습니다. 반면 Role은 여러 Authorities를 포함할 수 있는 포괄적인 permission을 가지며, 반드시 prefix에 'ROLE_'을 명시해야하는 작명규칙을 가집니다. 그림으로 살펴보면 아래와 같이 표현할 수 있습니다. 참고 자료 : https://www.youtube.com/playlist?list=PLV..
이번글에서는 앞서 생성한 Spring Batch의 Meta Data Table에 대해 자세히 알아보도록 하겠습니다. 1. Meta Data Table 이전글에서 생성한 spring batch meta data table의 전체 구조는 다음과 같습니다. 이번글에서는 위의 테이블들을 자세히 살펴보도록 하겠습니다. 😎 2. BATCH_JOB_INSTANCE 먼저 batch_job_instance 테이블은 job parameter에 따라 row가 생성되는 테이블 입니다. 현재 MySQL에서 batch_job_instance를 조회해보면 아래와 같이 검색됩니다. • job_instance_id : batch_job_instance 테이블의 PK 입니다. • job_name : 수행한 batch job의 name ..
이번글에서는 MySQL을 사용해 Spring Batch를 실행하는 방법에 대해 알아보도록 하겠습니다. 1. H2 이전글에서 사용한 코드를 동일하게 사용하도록 하겠습니다. 우리는 이전글에서 간단하게 Spring Batch Application이 작동하는 것을 확인했습니다. 이때 MySQL이나 Oracle과 같은 DB를 사용한다고 명시하지 않았기 때문에, Spring Boot의 Default DB인 H2를 사용해 Spring Batch가 수행되었다고 생각할 수 있습니다. 2. MySQL 그렇다면 MySQL을 사용할때도 동일하게 별다른 설정 없이 Spring Batch가 작동할 수 있을까요?.. 정답은 그렇지 않습니다.😅 내장 DB인 H2를 제외한 DB에서 Spring Batch를 사용하기 위해서는, DB에 ..
이번글에서는 Spring Batch를 사용해 간단한 Batch Job을 수행해보도록 하겠습니다. 1. Spring Batch Project 먼저 Spring Batch Project를 생성하도록 하겠습니다. 저는 'Spring Boot 2'와 'Gradle'을 사용하겠습니다. SQL은 'JPA'를 사용하도록 하겠습니다. • Spring Boot 2 • Java 8 • Gradle • JPA Spring Intilizer를 사용해 각자 환경에 맞는 Spring Project를 생성합니다. 프로젝트 생성시 Spring Dependencies는 다음과 같이 선택합니다. 생성이 완료된 project의 build.gradle은 다음과 같습니다. build.gradle plugins { id 'org.springf..
이번글에서는 Batch Application에 대해 알아보도록 하겠습니다. 1. Batch Application Batch Application이란 단발성으로 대용량의 데이터를 처리하는 어플리케이션을 의미합니다. 예를 들어 매일 전날의 대용량 데이터를 집계해 처리해야하는 단발성 비즈니스 로직이 필요하다면, 이를 Batch Application 으로 작성해 수행할 수 있습니다. 만약 이를 Batch Application으로 분리해 수행하지 않고, 실제 서비스를 수행하는 MVC 서버에서 처리하게 된다면 해당 집계처리를 위해 많은양의 CPU, I/O 등의 자원을 소모하게 됩니다. 반면 Batch Application으로 처리한다면 사용자들에게는 쾌적한 서비스를 제공할 수 있습니다. 또한, Batch 로직 수행..