티스토리챌린지 16

34. RestTemplate의 Post 요청, exchange

Post 요청 방법  Client 입장 서버요청 받은 검색어를 Query String 방식으로 Server 입장의 서버로 RestTemplate를 사용하여 요청합니다. public ItemDto postCall(String query) { URI uri = UriComponentsBuilder .fromUriString("http://localhost:7070") .path("/api/server/post-call/{query}") // @PathVariable 방식 .encode() .build() .expand(query) // 위 {} 에 들어갈 값을 넣어준다 .toUri(..

33. RestTemplate이란 무엇일까?

서비스 개발을 진행하다보면 라이브러리 사용만으로는 구현이 힘든 기능들이 무수히 많이 존재합니다.예를 들어 우리의 서비스에서 회원가입을 진행할 때 사용자의 주소를 받아야 한다면?>> 주소를 검색할 수 있는 기능을 구현해야하는데 직접 구현을 하게되면 많은 시간과 비용이 들어갑니다.이때 카카오에서 만든 주소 검색 API를 사용한다면 해당 기능을 간편하게 구현할 수 있습니다.  우리의 서버는 Client의 입장이 되어 Kakao 서버에 요청을 진행해야합니다.Spring에서는 서버에서 다른 서버로 간편하게 요청할 수 있도록 RestTemplate 기능을 제공하고 있습니다.   Get 요청 방법  - Client 입장의 서버 - RestTemplate을 주입 받습니다.요청 받은 검색어를 Query String 방식..

31. Spring Security: JWT 로그인

이전 '24. Spring Security 로그인'에서는 인증이 완료된 클라이언트에게 세션 쿠키를 발급합니다. 이번에는 인증이 완료된 클라이언트에게 JWT를 발급하도록 하겠습니다.   1. JwtAuthenticationFilter : 로그인 진행 및 JWT 생성package com.sparta.springauth.jwt;import com.fasterxml.jackson.databind.ObjectMapper;import com.sparta.springauth.dto.LoginRequestDto;import com.sparta.springauth.entity.UserRoleEnum;import com.sparta.springauth.security.UserDetailsImpl;import jakarta..

30. Spring Security 로그인

Spring Security를 사용한다면 Client 의 요청은 모두 Spring Security 를 거치게 됩니다.Spring Security 역할인증/인가성공 시: Controller 로 Client 요청 전달Client 요청 + 사용자 정보 (UserDetails)실패 시: Controller 로 Client 요청 전달되지 않음Client 에게 Error Response 보냄   Client로그인 시도로그인 시도할 username, password 정보를 HTTP body 로 전달 (POST 요청)로그인 시도 URL 은 WebSecurityConfig 클래스에서 변경 가능아래와 같이 설정 시 "POST /api/user/login" 로 설정됩니다. 인증 관리자 (Authentication Manag..

29. Spring Security 프레임워크

'Spring Security' 프레임워크는 Spring 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공해 줌으로써 개발의 수고를 덜어 줍니다. 마치 'Spring' 프레임워크가 웹 서버 구현에 편의를 제공해 주는 것과 같습니다.  Spring Security 사용을 위해 의존성 추가를 해줍니다.// Securityimplementation 'org.springframework.boot:spring-boot-starter-security'  Spring Security  설정// Bean 수동 등록@Configuration@EnableWebSecurity // Spring Security 지원을 가능하게 함public class WebSecurityConfig { @Bean // 아래 메서드를..

카테고리 없음 2024.11.18

28. 필터란 무엇일까?

Filter: Web 애플리케이션에서 관리되는 영역으로 요청과 응답에 대해 최초/최종 단계의 위치하며 이를 통해 요청과 응답의 정보를 변경하는 등 부가적인 기능을 추가할 수 있습니다.주로 범용적으로 처리해야 하는 작업들, 예를들어 로깅 및 보안 처리에 활용합니다.인증, 인가와 관련된 로직들을 처리할 수도 있습니다.Filter를 사용하면 필터 내 로직을 비즈니스 로직과 분리하여 관리할 수 있다는 장점이 있습니다.  Filter는 한 개만 존재하는 것이 아니라 여러 개가 Chain 형식으로 묶여서 처리되고 있습니다.  Request URL Logging 필터import java.io.IOException;@Slf4j(topic = "LoggingFilter")@Component@Order(1)public c..

27. JWT 다루기

JWT란 무엇일까?JWT(Json Web Token): JSON 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token 입니다. 즉, 토큰의 한 종류라고 생각하시면 됩니다. 일반적으로 쿠키 저장소를 사용하여 JWT를 저장합니다.  JWT 장/단점장점동시 접속자가 많을 때 서버 측 부하 낮춤Client, Sever 가 다른 도메인을 사용할 때예) 카카오 OAuth2 로그인 시 JWT Token 사용단점구현의 복잡도 증가JWT에 담는 내용이 커질 수록 네트워크 비용 증가 (클라이언트 → 서버)기 생성된 JWT 를 일부만 만료시킬 방법이 없음SecretKey 유출 시 JWT 조작 가능  JWT 사용 흐름Client 가 username, password 로 로그인 성공 시서버에서 "로..

26. 쿠키와 세션이란 무엇일까?

쿠키와 세션 모두 HTTP 에 상태 정보를 유지(Stateful)하기 위해 사용됩니다. 즉, 쿠키와 세션을 통해 서버에서는 클라이언트 별로 인증 및 인가를 할 수 있게 됩니다.  쿠키클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일 입니다.클라이언트인 웹 브라우저에 저장된 '쿠키' 를 확인해 보죠.크롬 브라우저 기준으로 '개발자도구' 를 열어 보세요.Application - Storage - Cookies 에 도메인 별로 저장되어 있는게 확인 됩니다.  구성요소Name (이름): 쿠키를 구별하는 데 사용되는 키 (중복될 수 없음)Value (값): 쿠키의 값Domain (도메인): 쿠키가 저장된 도메인Path (경로): 쿠키가 사용되는 경로Expires (만료기한): 쿠키의 만료기한 (만료기한 ..