전체 글

🚨ERROR🚨

constructor * in class * cannot be applied to given types

mapstruct의 @Mapper 애너테이션으로 Todo 클래스와 DTO 클래스를 매핑해주기 위해 코드를 작성하던 중 다음과 같은 에러를 만났다. 아래와 같이 Todo 클래스에는 생성자 관련 애너테이션이 달려있었지만 왜 안되는걸까 싶어서 이것저것 찾아보다가, TodoMapper의 구현체인 TodoMapperImpl 클래스의 코드도 이상하게 적혀있어서 설정 자체가 잘못된 것 같아서 작성되어 있는 build.gradle과, 오류를 해결하기 위해 찾아보던 중 발견한 lombok설정이 달라서 추가해주니까 해결됐다! 기존 작성된 의존 라이브러리 implementation 'org.projectlombok:lombok' implementation 'org.mapstruct:mapstruct:1.5.3.Final' ..

🌩️Cloud

AWS 학습을 위한 기본 학습

Cloud Computing 서버의 자원/공간/네트워크 환경을 빌려서 사용하는 것 기존의 On-premise(온프레미스) 방식과는 달리 물리적인 컴퓨터가 아닌 가상 컴퓨터를 대여하는 방식 IT 리소스를 인터넷을 통해 제공하고, 사용한 만큼 비용을 지불하는 방식으로 운영 필요에 따라 빌리는 환경의 성능을 조절 가능 컴퓨터의 스냅샷(이미지)을 이용해 다른 컴퓨터로 즉시 이주(migration) 가능 On-demand(주문형) 방식 단점 운영 환경 자체가 클라우드 제공자에게 종속되기 때문에, 클라우드에 문제가 생길 경우 사용자가 배포 중인 서비스에도 영향이 미친다. 백엔드 구성이 특정 회사의 기술로만 구성되어야만 하는 경우가 생길 수도 있다. On-demand 방식 - 사용자의 요구 사항에 따라 즉시 제공/공..

🕸️Network

Cookie? Session?

쿠키(Cookie) - 웹 사이트에 접속 시 그 사이트가 사용하는 서버를 통해 사용자의 장치에 저장되는 작은 데이터 파일 - key / value 쌍으로 이루어진 정보 파일 - 만료기간이 정해지면 브라우저가 종료되도 인증이 유지됨 세션 쿠키 만료일시가 지정되지 않은 쿠키. 브라우저 메모리에 저장되었다가 현재 세션(브라우저)이 끝나면 사라짐. 브라우저가 재시작 될 때 쿠키를 복원해서 사용. 지속 쿠키 만료일시가 지정된 쿠키. 파일로 저장되어 브라우저가 종료되어도 쿠키는 남아있음. 동작 방식 1. 클라이언트가 리소스를 요청한다. 2. 서버에서 쿠키를 생성한다. 3. HTTP Header에 쿠키를 포함시킨 response를 전달한다. 4. 클라이언트가 같은 요청을 할 경우 HTTP Header에 쿠키를 포함시..

🌿With Spring/Spring Security

Servlet Filter와 Filter Chain

Servlet Filter 서블릿 기반 애플리케이션에서 애플리케이션의 endpoint에 request가 도달하기 전에, 중간에서 request를 가로챈 후 어떠한 처리를 할 수 있는 포인트 자바에서 제공하는 API. javax.servlet 패키지에 인터페이스로 정의되어 있음 ex) 사용자의 웹 요청이 Controller 같은 endpoint에 도달하기 전에 인증 관리자나 인가 관리자 등의 컴포넌트가 중간에서 요청을 가로채 사용자의 credential과 authorization 등을 검사 Servlet Filter(서블릿 필터)는 하나 이상의 필터들을 연결해 Filter Chain을 구성할 수 있다. 각각의 필터는 doFilter() 메소드를 반드시 가지고 있어야 하고, doFilter() 메소드를 통해..

🌿With Spring/Spring Security

OAuth2 알아보기

OAuth2란? Open Standard for Authorization 인터넷 사용자들이 로그인 자격증명(ID/Password 등)을 전송하지 않고도 다른 웹사이트에 있는 자신의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있도록 하는 것 특정 애플리케이션(Client)에서 사용자의 인증을 직접 처리하는 것이 아닌, 사용자 정보를 보유하고 있는 신뢰할 만한 third-party application(Google, Github 등)에서 사용자의 인증을 대신 처리해주고 resource에 대한 자격 증명용 토큰을 발급한 후, Client가 해당 토큰을 이용해 third-part application의 서비스를 사용하게 해주는 방식 예를 들자면, 일정 관리 애플리케이션을 만들기 위해 Googl..

🌿With Spring

Spring MVC

Spring MVC Spring의 모듈 중에서 Servlet API를 기반으로 클라이언트의 요청을 처리해주는 모듈이 있다. 이 모듈의 이름이 spring-webmvc인데, 얘가 바로 spring MVC라고 불리는 프레임워크이다. 우리는 Spring MVC 웹 프레임워크가 제공해주는 기능들을 이용해서 클라이언트의 요청을 편리하게 처리해줄 수 있다. MVC의 의미 M(Model) 우리가 패션 모델이라고 부르는 사람들은 패션 디자이너가 만든 옷을 관객들에게 선보인다. 이것과 비슷하게 Spring MVC에서의 Model도 같은 역할을 한다. Spring MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 받으면 요청 사항을 처리하기 위한 작업을 하고, 처리한 작업의 결과 데이터를 클라이언트에게 응답으로 돌려줘야..

🌿With Spring/Spring Security

JWT 알아보기

JWT(JSON Web Token) - 데이터를 안전/간결하게 전송하기 위해 고안된 인터넷 표준 인증 방식 - 유저를 인증하고 식별하기 위한 토큰 기반 인증 방식 - JSON 형태의 토큰 정보를 인코딩 후, 인코딩된 토큰 정보를 Secret Key로 Sign한 메시지를 Web Token으로 만들어 인증과정에 사용 JWT의 종류 1. Access Token - 보호된 정보들에 접근할 수 있는 권한을 부여할 때 사용 ➡️로그인 시 Access/Refresh Token 두 가지 다 받지만, 실제로 권한을 얻을 때 사용되는 토큰은 Access Token 2. Refresh Token - 새로운 Access Token을 발급할 때 사용 ➡️일반적으로 DB에 유저 정보와 함께 기록 JWT 구조 Header - 토큰..

🌿With Spring/Spring Security

Spring Security의 인가 처리 과정

Spring Security Filter Chain에 사용자의 로그인 인증 request가 도착해서 인증을 얻고난 뒤, 사용자가 애플리케이션에서 제공하는 리소스를 사용하기 위해서는 하나의 과정이 더 필요하다. 인증이 정상적으로 처리된 것이 확인되었다면 리소스에 대한 접근 권한을 부여해야 한다. 1. AuthorizationFilter는 SecurityContextHolder로부터 Authentication을 획득한다. 2. 획득한 Authentication과 HttpServletRequest를 AuthorizationManager에게 전달한다. 3. RequestMatcherDelegationAuthorizationManager 내부에서 매치되는 AuthorizationManager 구현 클래스가 있다면..

🌿With Spring/Spring Security

Spring Security 인증 처리 과정

사용자가 로그인 인증을 요청했을 때 spring security에서 해당 요청을 어떻게 처리하는지 도식화한 이미지이다. 일반적으로 ID/Password(spring security에서는 username/password)를 이용해서 로그인하기 때문에 위의 이미지도 ID/Password를 이용한 로그인 인증을 처리하는 상황이다. 1. 가장 먼저 사용자가 로그인 폼(form)을 통해 spring security가 적용된 애플리케이션으로 Id(username)와 password를 포함한 request를 전송한다. 사용자의 요청이 [spring security filter] 영역으로 들어오면 가장 먼저 UsernamePasswordAuthenticationFilter가 요청을 전달받는다. (Filter가 요청을 ..

🌿With Spring/Spring Security

Spring Security의 요청 처리 과정

1. 사용자가 리소스를 요청한다. 2. 인증 관리자 역할의 컴포넌트가 사용자의 credential(password)을 요청한다. 3. 사용자는 인증 관리자에게 credential을 제공한다. 4. 인증 관리자는 credential 저장소에서 사용자의 credential을 조회한다. 인증 관리자는 사용자의 credential과 저장소의 credential을 비교하여 검증 작업을 수행한다. 5. 유효하지 않은 credential이라면 exception을 throw하고, 유효하다면 접근결정 관리자 역할의 컴포넌트는 사용자가 적절한 권한을 부여받았는지 검증한다. 6. 적절한 권한을 받지 못했다면 exception을 throw하고, 적절한 권한을 부여받았다면 보호된 리소스에 사용자가 접근하는 것을 허용한다.

코딩베이비
코베의 코딩탐험대작전