본문 바로가기

MSA23

Client Credentials Grant Client Credentials Grant는 OAuth 2.0에서 사용자가 개입하지 않고 클라이언트 애플리케이션이 자신의 자격 증명(Client ID와 Client Secret)을 사용해 액세스 토큰을 발급받는 인증 방식입니다. 주요 목적: 서버 간 통신(Server-to-Server)이나 사용자가 필요 없는 작업에서 사용됩니다.1. Client Credentials Grant 개요사용자 인증이 필요하지 않습니다. 클라이언트 애플리케이션 자체가 인증 서버에 자신의 자격 증명을 사용해 토큰을 발급받습니다. 주로 백엔드 서비스 또는 마이크로서비스 간 통신에서 사용됩니다.2. Client Credentials Grant 흐름단계별 흐름클라이언트가 토큰 요청 클라이언트는 인증 서버에 Client ID와.. 2024. 12. 17.
Authorization Code Grant Authorization Code Grant는 OAuth 2.0에서 가장 널리 사용되는 인증 방식입니다. 클라이언트 애플리케이션이 인증 서버로부터 Authorization Code를 먼저 발급받고, 이 코드를 통해 액세스 토큰을 요청하는 두 단계로 이루어져 있습니다.OAuth 2.0에서는 여러 가지 그랜트 타입(Grant Type)을 제공하지만, 보안 문제 때문에 Authorization Code Grant(특히 PKCE 적용)를 제외한 다른 방식들은 현재 거의 사용되지 않습니다.  1. PKCE를 포함한 Authorization Code Grant 흐름PKCE를 적용하면 인증 코드 발급 및 액세스 토큰 요청 과정이 조금 더 보안적으로 강화됩니다.단계별 흐름1단계: 인증 코드 요청클라이언트는 Code C.. 2024. 12. 17.
Proof Key for Code Exchange (PKCE, 픽시) Proof Key for Code Exchange (PKCE, 픽시)는 OAuth 2.0의 Authorization Code Grant 흐름에서 발생할 수 있는 인증 코드 탈취 공격을 방지하기 위해 만들어진 보안 강화 메커니즘입니다.주로 공개 클라이언트(Public Clients) 환경에서 사용되며, 예를 들어 모바일 앱, SPA(Single Page Application), 데스크탑 애플리케이션과 같이 클라이언트 비밀키를 안전하게 저장할 수 없는 환경에서 필요합니다.1. PKCE(픽시)가 필요한 이유인증 코드 탈취 공격OAuth 2.0의 Authorization Code Grant 흐름에서 인증 코드(Authorization Code)는 클라이언트가 액세스 토큰을 요청할 때 사용됩니다. 하지만 이 코드.. 2024. 12. 17.
투명 토큰(Transparent Token), 불투명 토큰(Opaque Token) 투명 토큰(Transparent Token)과 불투명 토큰(Opaque Token)은 토큰의 정보 구조와 사용 목적에 따라 구분됩니다. 1. 투명 토큰 (Transparent Token) = JWT특징바디에 정보(클레임)를 가지고 있습니다. JWT (JSON Web Token)는 투명 토큰의 대표적인 예입니다. 토큰 자체에 사용자 정보와 인증 관련 데이터가 담겨 있기 때문에 서버 측에서 별도의 검증 저장소를 확인하지 않고도 토큰만으로 정보를 해석할 수 있습니다.구조JWT는 다음과 같이 3가지 부분으로 구성됩니다: Header: 토큰의 타입과 서명 알고리즘 정보를 담습니다. Payload: 사용자 정보(클레임)가 담겨 있습니다. Signature: 토큰의 무결성을 검증하기 위한 서명입니다.Head.. 2024. 12. 17.
스프링 웹 MVC의 아규먼트 리졸버(Argument Resolver) 스프링 웹 MVC의 아규먼트 리졸버(Argument Resolver)는 컨트롤러 메서드의 매개변수(Argument)에 데이터를 자동으로 주입해주는 기능을 제공하는 스프링의 핵심 컴포넌트입니다. HTTP 요청 데이터에서 필요한 정보를 추출하거나, 특정 규칙에 따라 객체를 생성하여 컨트롤러 메서드에 전달합니다.1. 아규먼트 리졸버의 기본 역할컨트롤러 메서드에 사용자가 정의한 매개변수와 스프링이 제공하는 애노테이션을 기반으로 HTTP 요청 데이터를 적절한 타입으로 변환하여 전달합니다.요청 파라미터, 헤더, 본문 데이터 등을 다양한 방식으로 처리.스프링 MVC는 다양한 기본 아규먼트 리졸버를 제공하며, 사용자 정의(커스텀) 아규먼트 리졸버를 추가할 수도 있습니다.2. 아규먼트 리졸버의 작동 원리클라이언트가 요청.. 2024. 12. 16.
RestTemplate(동기,블로킹) & Kafka(비동기,논블로킹) RestTemplate은 Spring Framework에서 제공하는 RESTful API 호출 클라이언트로, 마이크로서비스 아키텍처(MSA)에서 서비스 간 통신을 처리하는 중요한 도구 중 하나입니다. MSA에서는 각 서비스가 독립적으로 배포되기 때문에, 서비스 간 통신이 빈번히 발생하며, 이를 효율적으로 처리하기 위해 RestTemplate이 사용됩니다.1. RestTemplate이란?RestTemplate은 Spring에서 제공하는 HTTP 통신 클라이언트로, RESTful 웹 서비스를 호출하기 위한 다양한 기능을 제공합니다.주요 역할:HTTP 요청 전송 (GET, POST, PUT, DELETE 등).JSON, XML 등 다양한 포맷의 요청/응답 처리.URI 파라미터 처리 및 응답 데이터 직렬화/역직.. 2024. 12. 16.