본문으로 건너뛰기

일반적인 사용 사례

이 섹션에서는 커스텀 토큰 클레임이 유용하게 사용될 수 있는 몇 가지 시나리오 예시를 제공하여 참고할 수 있도록 도와드립니다. 이를 통해 접근 관리에 어려움을 겪을 때 커스텀 토큰 클레임이 편의를 제공할 수 있는지 평가할 수 있습니다.

속성 기반 접근 제어 (ABAC)를 가능하게 하기

속성 기반 접근 제어 (ABAC)는 속성(예: 사용자 역할, 리소스 속성, 환경 조건 등)을 사용하여 접근 제어 결정을 내리는 접근 제어 모델입니다. 이는 보호된 리소스에 대한 접근을 유연하고 동적으로 관리할 수 있는 방법입니다.

예를 들어, 앱을 개발 중이고 앱 출시가 공개 베타와 공식 출시의 두 단계로 나뉘어 있다고 가정해봅시다. 공식 출시 후에도 공개 베타에 참여했던 기존 사용자들이 유료 기능을 계속 사용할 수 있도록 하고 싶습니다.

앱이 공식적으로 출시된 후에는 Logto의 역할 기반 접근 제어 (RBAC) 기능을 사용하여 유료 기능 사용에 대한 접근 제어를 구현합니다. 사용자가 공개 베타 단계에서 이미 앱을 사용하고 있었는지 쉽게 확인하기 위해, getCustomJwtClaims() 메서드를 사용하여 토큰 페이로드에 createdAt 클레임을 추가할 수 있습니다.

그런 다음, 보호된 API에서 접근 제어를 할 때 다음 조건 중 하나를 충족하는 액세스 토큰을 허용해야 합니다:

  1. RBAC 컨텍스트에서 유료 리소스에 접근할 수 있는 스코프를 가지고 있음.
  2. createdAt이 공개 베타 종료 시점보다 이전임.

커스텀 토큰 클레임 기능이 없다면, 인가 (Authorization) 권한을 검증할 때 Logto Management API를 호출하여 현재 액세스 토큰을 가진 사용자가 특정 API 리소스에 필요한 역할에 해당하는 권한을 가지고 있는지 확인해야 합니다.

비슷한 시나리오로, 사용자의 생일이 다가오면 로그인 페이지에 생일 축하 메시지를 표시하고 싶다고 가정해봅시다. 커스텀 토큰 클레임을 사용하여 토큰 페이로드에 생일 필드를 추가하면, 특정 메시지를 표시할지 여부를 판단하는 데 사용할 수 있습니다.

토큰 발급을 수동으로 차단하기

Joe가 온라인 게임을 운영하며 Logto를 아이덴티티 및 접근 관리 (IAM) 시스템으로 사용한다고 가정해봅시다.

이 게임은 게임 시간을 구매하기 위해 충전이 필요하다고 가정합니다. Joe는 각 사용자의 잔액을 자신의 게임 서비스에 기록하고, 게임 시간이 누적될수록 잔액을 지속적으로 차감합니다. Joe는 계정 잔액이 소진되면 플레이어가 강제로 로그아웃되어 재충전을 유도하고 싶어합니다.

이때 Joe는 Logto에서 제공하는 커스텀 토큰 클레임 기능을 활용할 수 있습니다:

  1. 스크립트에서 외부 API 호출 외부 데이터 가져오기를 통해 Joe의 게임 서버에서 현재 플레이어의 잔액을 조회할 수 있습니다.
  2. 잔액이 0 이하인 경우, api.denyAccess() 메서드를 사용하여 토큰 발급을 차단할 수 있습니다.

이렇게 하면 새로운 유효한 액세스 토큰을 얻을 수 없으므로, 플레이어는 게임에서 강제로 로그아웃됩니다.