Spring

    [Spring] 컨트롤러에서 요청을 받는 2가지 방법

    [Spring] 컨트롤러에서 요청을 받는 2가지 방법

    [문제] 다음과 같이 컨트롤러에서 Ajax가 보낸 request를 받아 응답해주는 코드가 있다. 포스트맨으로 테스트를 먼저 해봤는데 잘 동작하는 것을 확인하였다. 그런데 HTML에 뿌리니까 다음과 같은 에러가 발생하였다. IDEA 콘솔에는 다음과 같은 에러가 발생하였다. Resolved [org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public java.lang.Object com.ildong.esg.view.qis.controller.UserQisController.productTableAjax(com.ildong.esg.common.model.PagingDTO$Pa..

    [Spring Security] 스프링 시큐리티의 아키텍쳐

    [Spring Security] 스프링 시큐리티의 아키텍쳐

    Authentication and Access Control 애플리케이션에서 보안은 인증과 권한의 두 가지 문제로 요약된다. 스프링 시큐리티는 인증과 권한을 분리하도록 설계되어있으며, 두 가지 모두 각각의 전략과 확장 지점들을 가지고 있다. Authentication Authentication의 주요 인터페이스는 AuthenticationManager이며, 이는 딱 한 개의 메소드를 가지고 있다. public interface AuthenticationManager { Authentication authenticate(Authentication authentication) throws AuthenticationException; } 이 메소드가 하는 일은 다음 3가지이다. 입력이 유요한 주체인 경우 Au..

    MyBatis, MySql, Spring Boot를 이용한 간단 예제

    MyBatis, MySql, Spring Boot를 이용한 간단 예제

    [도입] 자바에서는 데이터베이스를 이용하기 위해 JDBC API를 이용하는데, 개발자가 작성해야 하는 코드가 너무 많아 불편했다. 이런 JDBC를 사용하기 쉽게 SQL Mapper를 이용한 MyBatis의 간단 예제를 살펴보자. [MyBatis 동작 원리] 1. 애플리케이션이 시작되면 SqlSessionFactoryBuilder는 MyBatis 설정 파일을 참고해서 SqlSessionFactory를 생성한다. 2. 애플리케이션에서 Sql 요청이 들어오면 SqlSession을 생성한다. 3. 생성한 SqlSession는 수행하는 쿼리문이 담겨져 있는 mapper를 참고하여 DB작업을 수행한다. [Mapper Interface] MyBatis 3.0이전에는 xml파일에 쿼리 명령문을 작성했어야 했는데, 3...

    [Spring Security] 스프리 시큐리티를 이용한 회원가입, 로그인 구현

    [Spring Security] 스프리 시큐리티를 이용한 회원가입, 로그인 구현

    시큐리티 설정 파일을 만든다. @Configuration @EnableWebSecurity // 모든 요청 URL이 스프링 시큐리티의 제어를 받도록 만드는 어노테이션. // 내부적으로 SpringSecurityFilterChain이 동작하여 URL 필터가 적용된다. @RequiredArgsConstructor // Adapter를 상속함으로써 httpSecurity의 다양한 속성을 설정. public class WebSecurityConfig extends WebSecurityConfigurerAdapter { // defines which URL paths should be secured and not. @Override protected void configure(HttpSecurity http) t..

    [Spring Security] 기본 로그인 인증 로직

    [Spring Security] 기본 로그인 인증 로직

    이번에는 스프링 시큐리티에서 기본 HTTP 인증 로직이 어떻게 돌아가는지 알아보자. Basic HTTP Authentication 클라이언트로 요청이 들어오면 SecurityFilterChain에서 다음과 같은 동작이 일어난다. 1. 클라이언트가 인증되지 않은 요청을 한다. 2. 스프링 시큐리티의 FilterSecurityInterceptor는 AccessDeniedException 예외를 던지면서 요청을 거절한다. 3. 유저가 인증되지 않았기 때문에 ExceptionTranslationFilter는 인증에 필요한 과정을 실행한다. - AuthenticationEntryPoint의 구현체인 Basic AuthenticationEntryPoint는 WWW-Authenticate header를 보낸다. - ..