TIL 38

+28 RestTemplate Get요청

private final RestTemplate restTemplate; public RestTemplateService(RestTemplateBuilder builder) { this.restTemplate = builder.build(); } RestTemplate builder를 등록 후 .build() 메서드를 호출하면서 RestTemplate를 주입받는다. Query String 방식으로 server to server로 RestTemplate를 사용 Query String 방식 ex) : http://host:port/path?querystring query parameters( 물음표 뒤에 = 로 연결된 key value pair 부분)을 url 뒤에 덧붙여서 추가적인 정보를 서버 측에 전달하..

TIL 2023.07.13

+27 Spring Security 로그인

Security 적용 전 Security 적용 후 ▶ 인증 인가 성공 시 Controller로 사용자정보 요청 전달 (UserDetails) ▶ 인증 인가 실패 시 요청 전달 x / client에게 Error Response 보냄 ☞Security 적용 후 이미지의 노란박스 상세 먼저 ① 로그인시도 (username, password)정보를 HTTP body로 전달(POST요청) ② Authentication Manager(인증관리자) UserDetailsService에게 username을 전달하고 회원상세 정보 요청 ③ UserDetailsService에서 요청한 정보(username)를 회원DB에 회원상세정보 요청 ㄴ 요청한 정보가 없을 땐 Error 발생 User user = userReposito..

TIL 2023.07.12

+26 RestTemplate이란 무엇일까?

● RestTemplate이란? 스프링 프레임워크에서 제공하는 HTTP통신을 위한 클라이언트 라이브러리 ( RESTful 웹서비스와 상호작용하기 위한 편리한 방법 제공 ) 즉, 서버에서 다른 서버로 간편하게 요청할 수 있음! ● RestTemplate 특징 스프링 3.0부터 지원 HTTP 요청 후 JSON , XML, string 과 같은 응답을 받을 수 있는 템플릿 Header, Content-Type 등을 설정하여 외부 api 호출 Server to Server 통신에 사용 기계적이고 반복적인 코드를 최대한 줄여줌 응답의 컨텐츠 타입 따라 별도 로직을 구현해서 작동함 RestTemplate는 spring3부터지원한 동기 방식인 템플릿 spring 4때 추가된 AsyncRestTemplate는 Rest..

TIL 2023.07.11

+25 Spring Security : JWT로그인

보안 용어 정리 Principal (접근주체) : 보호된 리로스에 접근하는 대상 인증(Authentication) : 누구인지 , / 보호된 리소스에 접근한 대상에 대해 이 유저가 누구인지 / 주체확인 / 인가(Authorize) : 어떤것을 할 수 있는지 / 해당 리소스에 대한 접근 가능한 권한을 확인하는 과정 (인증 이후) ● JWT인증 처리 ● JwtAuthenticationFilter 로그인 진행 및 JWT생성 package com.sparta.springauth.jwt; import com.fasterxml.jackson.databind.ObjectMapper; import com.sparta.springauth.dto.LoginRequestDto; import com.sparta.springa..

TIL 2023.07.09

+24 Spring Security 프레임워크

Spring Security는 Filter 기반으로 동작함 인증 인가처리를 쉽게 도와줌 @EnableWebSecurity Spring Security 지원을 가능하게함 securityFilterChain() 이 메서드는 개발자가 security를 사용할 때 어떤 url은 인가하고 어떤 url은 인가하지 않은 설정해주고 "어떤 기능을 사용하겠다. " , "어떤 기능은 사용하지 않겠다." 설정들을 수행 ● WebSecurityConfig package com.sparta.springauth.config; import org.springframework.boot.autoconfigure.security.servlet.PathRequest; import org.springframework.context.anno..

TIL 2023.07.08

+23 스프링부트 필터 Filter

스프링 부트에서 필터(Filter)는 클라이언트와 서버 간의 통신에서 요청과 응답을 가로채어 처리하는 역할을 수행합니다. 필터는 서블릿 컨테이너 내에서 작동하며, 클라이언트의 요청이 서블릿으로 전달되기 전이나 응답이 클라이언트에게 전송되기 전에 중간에서 작업을 수행할 수 있습니다. @slf4j 로그 수행 작업을 하려면 해당 에노테이션을 사용 Filter Chain 필터체인은 필터는 우선 한개만 존재하는 것이 아니다. 여러개가 chain 형식으로 묶여서 처리가 가능하다 @Order 필터의 순서를 정함 필터의 기능 중 인증 및 인가 처리 필터 ▼ @Slf4j(topic = "AuthFilter") @Component @Order(2) public class AuthFilter implements Filter..

TIL 2023.07.07

+22 JWT 토큰기반 무엇일까?

JWT 진행 순서 1. 클라이언트 사용자가 ID, PASSWORD를 통해 웹서비스 인증 // 여기서 로그인 성공 시 서버에서 "로그인 정보" => JWT로 암호화 (이때 secret key 사용) 2. 서버에서 서명된 JWT를 생성해서 클라이언트에 응답으로 돌려주기 (쿠키에 담아 전달) 3. 클라이언트가 서버에 데이터를 추가적으로 요구할 때 JWT를 HTTP Header에 첨부 4. 서버에서 클라이언트로 부터 온 JWT를 검증 순서도 JWT 장점 * 동시 접속자가 많을 때 서버 측 부하 낮춤 * 클라이언트, 서버가 다른 도메인을 사용할 때, 카카오 OAuth2 로그인 시 API JWT 토큰 사용 JWT 단점 * 구현 복잡함 * 네트워크 비용 증가 (클라 -> 서버) * secret key 유출시 jwt ..

TIL 2023.07.06

+21 Spring DATA JPA란 무엇??

JPA와 Spring DATA JPA는 다르다. :: 스프링부트에서 사용하는 JPA는 Spring DATA JPA로 , JPA를 더 쉽게 사용하기 위해 스프링부트에서 제공하고 있는 프레임워크임 Spring 부트에서 DB에 접근하기위해 사용할 때는 Repository를 사용했고, 이 레포지토리가 Spring Data JPA의 핵심이다. Spring Data JPA는 Spring에서 제공하는 모듈 중 하나로, 개발자가 JPA를 더 쉽고 편하게 사용할 수 있도록 도와준다. 이는 JPA를 한 단계 추상화시킨 Repository라는 인터페이스를 제공함으로써 이루어진다. 사용자가 Repository 인터페이스에 정해진 규칙대로 메소드를 입력하면, Spring이 알아서 해당 메소드 이름에 적합한 쿼리를 날리는 구현체..

TIL 2023.07.05

+20 영속성 컨텍스트란? 영속성 컨텍스트의 기능

영속성 컨텍스트는 엔티티를 영구 저장하는 환경이라는 뜻이다. 영속성 컨텍스트는 애플리케이션과 DB 사이에서 객체를 보관하는 가상의 DB 역할을 한다. 엔티티 매니저(EntityManager)를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리하게 된다. --> 엔티티 객체를 효율적으로 쉽게 관 리하기 위해 만들어진 공간 효율적으로 처리하기 위해 JPA는 영속성 컨텍스트에 Entity 객체들을 저장하여 관리하면서 DB와 소통합니다. 영속성 컨텍스트에 접근하여 Entity 객체들을 조작하기 위해서는 EntityManager가 필요합니다. EntityManager는 이름 그대로 Entity를 관리하는 관리자입니다. 개발자들은 EntityManager를 사용해서 Enti..

TIL 2023.07.04

+19 JPA란 무엇일까?

JPA(Java Persitance API) "자바에서 데이터를 영구히 기록할 수 있는(DBMS에) 환경을 제공하는 API" API란 "인터페이스(어떤 약속)을 토대로 요청에 대한 응답을 제공해주는 프로그램"정도로 이해할 수 있다. JAVA Persistence Application Programming Interface JPA는 자바 프로그램을할 때 영구적으로 데이터를 저장하기위해 필요한 인테페이스를 제공해주는 것 ORM이란? // ORM의 등장 배경 : 반복적이고 번거로운 애플리케이션단에서의 SQL 작업을 줄여주기 위해서 등장 *의미 객체와 관계형 데이터베이스를 맵핑해주는 기술 객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스대로 설계 ORM 프레임워크는 그 중간에서 맵핑! 장점 SQL문이 ..

TIL 2023.07.03