기계 대 기계 통신을 위한 API 리소스 보안
OAuth 2.0 및 JWT 를 활용하여 기계 대 기계 통신을 위한 API 리소스를 안전하게 보호하는 방법을 배워보세요.
OAuth 2.0 및 JWT 를 활용하여 기계 대 기계 통신을 위한 API 리소스를 안전하게 보호하는 방법을 배워보세요.
여러 서비스가 포함된 프로젝트를 구축할 때, API 리소스의 보안은 중요한 문제입니다. 이 기사에서는 OAuth 2.0 및 JWT 를 활용하여 서비스 간의 통신(기계 대 기계)을 안전하게 보호하고, 최소 권한 원칙을 따르기 위해 역할 기반 접근 제어(RBAC)를 적용하는 방법을 보여드리겠습니다.
따라가기 위해 다음과 같은 전제 조건이 있다고 가정합니다:
데모 목적을 위해, 다음과 같은 서비스가 있다고 가정해봅시다:
https://cart.example.com/apihttps://payment.example.com/api이제 우리 카트 서비스는 결제를 처리하기 위해 결제 서비스를 호출해야 합니다. 인증 흐름은 다음과 같습니다:
위의 다이어그램의 몇 가지 주요 개념:
위의 다이어그램에서 각 참여자는 인증 흐름에서 역할을 수행합니다:
이제 인증 흐름을 단계별로 살펴보겠습니다.
인증 흐름을 수행하려면, Logto 내에서 기계 대 기계 앱(카트 서비스)과 API 리소스(결제 서비스)를 만들어야 합니다.
카트 서비스가 인증을 수행할 때 결제 서비스의 API 를 인식해야 하기 때문에 먼저 API 리소스를 생성해야 합니다. Logto 콘솔로 이동하여 왼쪽 사이드바에서 API 리소스를 클릭하고 API 리소스 생성을 클릭합니다. 열린 대화 상자에서는 시작하는 데 도움이 되는 몇 가지 튜토리얼을 제공합니다. 튜토리얼 없이 계속하기를 클릭하여 생략할 수도 있습니다.
API 이름 및 식별자를 입력하세요, 예를 들면, 결제 서비스 및 https://payment.example.com/api를 입력한 후, API 리소스 생성을 클릭합니다.
API 리소스를 생성한 후, 세부 페이지로 리디렉션됩니다. 지금은 그대로 두어도 괜찮습니다.
왼쪽 사이드바에서 애플리케이션을 클릭하고 애플리케이션 생성을 클릭합니다. 열린 대화 상자에서 기계 대 기계 카드를 찾아 시작하기를 클릭합니다.
애플리케이션 이름을 입력하세요, 예를 들어 카트 서비스, 그런 다음 애플리케이션 생성을 클릭합니다. 애플리케이션 설정을 돕기 위한 인터랙티브 가이드가 표시됩니다. 기본 사용법을 이해하려면 가이드를 따르거나, 완료하고 마치기를 클릭하여 생략할 수 있습니다.
기계 대 기계 애플리케이션은 보안이 보장된 것을 가정하기 때문에 (예: 비공개 네트워크에 배포됨), OAuth 2.0 "client_credentials" 승인을 사용하여 액세스 토큰을 얻을 수 있습니다. 클라이언트를 인증하기 위해 기본 인증을 사용합니다:
POST입니다.Content-Type 헤더는 application/x-www-form-urlencoded입니다.Authorization 헤더의 값은 Basic <base64(app_id:app_secret)> 입니다, 여기서 app_id와 app_secret은 각각 기계 대 기계 앱의 앱 ID 와 앱 비밀입니다. 애플리케이션 세부 정보 페이지에서 찾을 수 있습니다.grant_type=client_credentials&resource=https://payment.example.com/api.
grant_type=client_credentials: