Logto x Cloudflare Workers: 어떻게 Workers를 공개 액세스에서 보호할 수 있을까?
이 글에서는 Logto를 사용하여 Cloudflare Workers API를 어떻게 보호할 수 있는지 소개합니다. 우리는 개발을 간소화하기 위해 웹 애플리케이션 프레임워크로 Hono를 사용했습니다.
Cloudflare Workers (이하 Workers라고 합니다)은 인프라를 구성하거나 유지 관리하지 않고 새로운 애플리케이션을 생성하거나 기존 애플리케이션을 증강할 수 있는 서버리스 실행 환경을 제공합니다.
Workers를 사용하면 서버리스 애플리케이션을 구축하고 전 세계적으로 즉시 배포하여 뛰어난 성능, 안정성 및 확장성을 제공합니다. Workers는 뛰어난 성능을 제공할 뿐만 아니라 매우 관대한 무료 플랜과 저렴한 유료 플랜을 제공합니다. 개인 개발자든 대규모 팀이든, Workers는 운영 오버헤드를 최소화하면서 신속하게 제품을 개발하고 배포할 수 있도록 도와줍니다.
Workers는 기본적으로 공개 접근이 가능하므로 공격 및 악용을 방지하기 위한 보호 조치가 필요합니다. Logto는 Workers 및 기타 모든 웹 서비스를 보호할 수 있는 포괄적이고 사용하기 쉬우며 확장 가능한 ID 서비스를 제공합니다.
이 글에서는 Logto를 사용하여 Workers를 보호하는 과정에 대해 자세히 살펴봅니다.
Workers 샘플 빌드하기
먼저 로컬 머신에서 Hono를 사용하여 Workers 샘플 프로젝트를 빌드해 보겠습니다.
우리는 Wrangler CLI를 사용하여 샘플을 Cloudflare에 배포합니다. 따라서 해당 경로에 접근할 수 있습니다.
Workers API 보호하기
공개 접근 가능한 API와 보호된 API를 비교하기 위해 특정 스코프가 필요로 하는 GET /auth/greet
API를 추가합니다.
적절한 권한이 없으면 해당 API에 접근할 수 없습니다.
Workers API에 대한 접근을 제대로 관리하기 위해 Logto를 도입합니다.
Logto 설정
계정이 없다면 등록하세요.
우리는 머신 투 머신 (M2M) 예를 사용하여 보호된 Workers API에 액세스하기 때문에 간단합니다. 웹 앱 사용자에게 접근을 부여하려면 설정이 비슷하지만 “User” 역할 대신 “Machine-to-machine” 역할을 사용해야 합니다.
- Logto Admin Console에 들어가 “API resource” 탭에서
https://sample.workers.dev/
리소스 표시기로 “Workers sample API”라는 이름의 API 리소스를 생성합니다. 이 API 리소스에 대한greet:visitor
권한도 생성합니다.
- “Machine-to-machine” 역할인 “Workers admin role”을 생성하고 이 역할에
greet:visitor
스코프를 할당합니다.
- M2M 앱을 생성하고 “Workers admin role”을 앱에 할당합니다.
Workers 인증 검증기 업데이트
Logto는 JWT 액세스 토큰을 사용하기 때문에 Workers에서 JWT 검증 로직을 구현해야 합니다.
Logto에서 JWT 액세스 토큰을 발행하기 때문에 우리는 다음을 수행해야 합니다:
- 서명을 검증하기 위한 공개 키를 가져옵니다.
- JWT 액세스 토큰의 소비자를 Workers API로 확인합니다.
이 상수는 wrangler.toml
파일 [1]에서 구성할 수 있으며 Workers의 환경 변수로 배포됩니다. 또한 Cloudflare 대시보드에서 환경 변수를 수동으로 관리할 수 있습니다.
Workers 프로젝트를 Cloudflare에 배포한 후 API가 성공적으로 보호되었는지 테스트할 수 있습니다.
- 액세스 토큰 가져오기
- Workers
GET /auth/greet
API 요청
결론
이 글의 단계별 가이드를 통해 Logto를 사용하여 Workers API를 보호하는 방법을 이 해할 수 있을 것입니다.
우리는 이 글에서 Workers 프로젝트의 로컬 개발 및 배포를 위해 Wrangler CLI를 사용했습니다. Cloudflare는 또한 배포 및 관리를 용이하게 하는 강력하고 다재다능한 Workers API를 제공합니다.
SaaS 애플리케이션을 개발한다고 가정해 보세요. Cloudflare API는 각 테넌트를 위해 전용 Workers를 쉽게 배포할 수 있도록 해주며, 그와 동시에 Logto는 접근 토큰이 각 테넌트에 독점적으로 유지되도록 보장합니다. 이러한 세밀한 제어는 테넌트 간의 비허가 접근을 방지하여 SaaS 애플리케이션 사용자의 보안과 데이터 프라이버시를 향상시킵니다.
Logto의 유연하고 강력한 아키텍처는 다양한 애플리케이션의 인증 및 인가 요구 사항을 충족시킬 수 있습니다. 복잡한 SaaS 플랫폼을 구축하거나 간단한 웹 앱을 만드는 경우에 상관없이, Logto는 사용자의 특정 요구사항을 충족하기 위한 유연성과 확장성을 제공합니다.