일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MFA
- MSA
- Spring REST Docs
- AuthenticatoinProvide
- T-OTP
- Filter
- UsernamePasswordAuthenticationFilter
- SWAGGER
- Pender
- REACT
- vue
- OpenStack
- openapi3
- 리액트
- cloud native
- SpringBoot
- Flyway
- Crawling
- SpringRESTDocs
- tasklet
- stopPropogation
- Spring Security
- gradle
- JavaScript
- Spring Batch
- vuejs
- cheerio
- Reduxpender
- preventdefault
- axios
- Today
- Total
목록IT 기술/[JAVA] Spring Boot (29)
Miracle Morning, LHWN
MFA (Multi-Factor Authentication) 기본 인증 외에 추가적인 인증을 통해 보안을 강화하는 기능을 말하며, 사용자의 서비스 접근에 있어 높은 보안을 제공한다. 인증 요소 유형 (Type of Authentication Factors) Knowledge : 사용자가 알고 있는 것. e.g) username, password, PIN 등 Possession : 사용자가 가지고 있는 것. e.g) safety token Heritage : 사용자 그 자체의 것. e.g) fingerprint, retina verification, voice recognization Place : 사용자의 물리적인 위치 Time : 인증을 위한 시간 기반의 기능 제공 e.g) OTP 다요소 인증 유형 (..
UsernamePasswordAuthenticationFilter http/form-login 을 지원하는 즉 Form data 를 기반으로 인증을 지원하기 위해 제공되는 Filter 이다. 기본적으로 Http Security 에 formLogin() 을 설정함으로서 활성화되며, UserDetail 과 UserDetailsService 를 활용하여 인증한다. UsernamePasswordAuthentication Flow Spring Security 에서 제공하는 WebSecurityConfigureAdapter 에 다양한 설정을 통해 웹 화면에서 전송되는 Form data 의 username, password 를 데이터베이스에 저장된 사용자 정보와 비교하게 된다. 인증에서 이용자 정보 시스템에서 이용..
Batch '일괄 처리' 로서, 일정 기간으로 스케줄링하여 처리한다. 유저와 상호 작용 없이 동작하며, 대용량 데이터 처리하는데에 쓰인다. 이때 고려해야 할 사항에는 무엇이 있을까 단순화 메모리에 무리가 가지 않는 수준으로 대량 처리 데이터의 무결성 DB 쿼리 최적화 백업 Spring Batch Spring Source 가 Accenture 사와 협력하여 개발한 Batch Framework 이다. 엔터프라이즈 환경에서 강력한 Batch Application 을 개발할 수 있도록 설계되었다. Logging / Tracing, Transaction Management, Job Processing Statistics, Job Restart, Skip, Resource Management 등 대량의 레코드 처리..
DelegatingFilterProxy Spring 은 Servlet Container (예. 톰캣) 의 생애주기 (LifeCycle) 와 Spring ApplicationContext 사이에서 연결할 수 있는 DelegatingFilterProxy 라는 필터를 제공한다. 기본적으로 스프링 서블릿 컨테이너 (Servlet Container) 는 자체 표준으로 제시하는 필터 등록을 허용한다. 하지만, Spring Bean 으로 정의되어 있는 필터는 제외하고 있다. Spring Security 에서는 DelegatingFilterProxy 를 통해 표준 서블릿 컨테이너 메커니즘을 통해 등록하는 필터 뿐만 아니라, Spring Bean 으로 구현한 모든 필터를 등록하고 위임하는 형태로 여과 작업을 진행한다. ..
# 먼저 Spring Web 설정을 한다. // configure/WebMvcConfiguration.java package com.spring.openstack.configure; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Config..
대부분의 시스템에서는 회원관리를 하고 있고, 이에 따라 인증(Authentication) 과 인가(Authorization) 에 대한 처리를 해주어야 한다. Spring 에서는 Spring Security 라는 별도의 프레임워크에서 관련된 기능을 제공하고 있다. Spring Security Spring Security 는 Spring 기반의 애플리케이션의 보안 (인증과 권한, 인가 등) 을 담당하는 스프링 하위 프레임워크이다. Spring Security 는 '인증'과 '권한'에 대한 부분을 Filter 흐름에 따라 처리하고 있다. Filter 는 Dispatcher Servlet 으로 가기 전에 적용되므로 가장 먼저 URL 의 요청을 받지만, Interceptor 는 Dispatcher 와 Contro..
MSA (Micro Service Architecture) 단일 프로그램을 각 컴포넌트 별로 나누어 작은 서비스의 조합으로 구축하는 방법이다. MSA 를 온라인 쇼핑몰에 적용한 예시는 아래와 같다. 각 컴포넌트는 서비스 형태로 구현되고 API 를 이용하여 타 서비스와 통신하게 된다. 각 서비스는 독립된 서버로 타 컴포넌트와 의존성이 없기 때문에 독립된 배포를 하게된다. 또한 각 컴포넌트가 독립된 서비스로 개발되어있기 때문에 부분적인 확장이 가능하다. 온라인 쇼핑몰에서 주문 서비스에 트래픽이 증가한다면 해당 서버만 확장을 해주면 된다. 다만, Monolithic Architecture 가 서비스 간의 호출이 하나의 프로세스 내에서 이루어지기 때문에 속도가 빠르지만 MSA 의 경우 서비스 간 호출을 API ..
# 앞서 만들어주었던 API 에 대한 테스트 코드를 작성한다. 아래와 같이 /api/user/{id} 요청에 대한 응답 명세를 작성해주고, 실행하면 generated-snippets 하위 폴더에 각 요청/응답에 대한 snippet 들이 생성된다. // test/java/com/spring/SpringRESTDocsPractice/UserApiDocumentation.java @RunWith(SpringRunner.class) @SpringBootTest public class UserApiDocumentation { @Rule public final JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation(); @Autowired pr..
사전 세팅 및 개념 정리 # 먼저 Spring initializr 에서 기본 세팅을 한 후 프로젝트를 생성한다. Spring Web : API 를 만들기 위해 설정 Spring Data JPA : 데이터베이스에서 CRUD 를 하기 위한 설정 (ORM 도구) Validation : Bean 의 유효성 검사를 위한 설정 Spring REST Docs Lombok : 로그를 좀 더 편하게 보기 위한 설정 MySQL Driver : MySQL 를 연동하기 위한 설정 # 문서화를 위한 API 생성 : POST /api/user 조회 : GET /api/user/{id} 수정 : PUT /api/user 삭제 : DELETE /api/user/{id} # 실습 순서 프로젝트 생성 실습에 필요한 테스트 API 코..
# 파일명을 정의할 때 역시 Flyway 가 인식할 수 있도록 명명규칙을 따라주어야 하며, 여기선 'V3__bulk_update_books.java' 로 지정하였다. 이때 경로는 src/java 하위에 바로 db/migration 경로를 생성해주었고 그 안에 java 파일을 위치한다. BaseJavaMigration 을 상속받아 migrate 함수를 Override 하여 사용해주면 된다. createStatement 를 통해 쿼리를 생성할 수 있는 객체를 만들고, SELECT 를 통해 가져온 rows 를 하나하나 while 문으로 돌려가며 UPDATE 쿼리를 날려주었다. package db.migration; import org.flywaydb.core.api.migration.BaseJavaMigrat..