일반적인 사용 사례
이 섹션에서는 사용자 정의 토큰 클레임이 유용할 수 있는 몇 가지 시나리오를 이해하는 데 도움이 되는 예제를 제공하여 참고할 수 있도록 합니다. 이렇게 하면 접근 관리에서 어려움을 겪을 때 사용자 정의 토큰 클레임이 편리함을 제공할 수 있는지 평가할 수 있습니다.
속성 기반 접근 제어 (ABAC) 가능하게 하기
속성 기반 접근 제어 (ABAC)는 속성 (예: 사용자 역할, 리소스 속성 및 환경 조건)을 사용하여 접근 제어 결정을 내리는 접근 제어 모델입니다. 이는 보호된 리소스에 대한 접근을 관리하는 유연하고 동적인 방법입니다.
앱을 구축하고 있으며, 앱의 출시가 두 단계로 나뉘어 있다고 가정해 봅시다: 공개 베타 및 공식 출시. 앱이 공식적으로 출시된 후에도 공개 베타에 참여한 오래된 사용자가 유료 기능을 계속 사용할 수 있도록 하고 싶습니다.
앱이 공식적으로 출시된 후, Logto의 역할 기반 접근 제어 (RBAC) 기능을 사용하여 유료 기능 사용에 대한 접근 제어를 구현합니다. 사용자가 공개 베타 단계 동안 이미 앱을 사용하고 있었는지 쉽게 확인하려면 getCustomJwtClaims()
메서드를 사용하여 토큰 페이로드에 createdAt
클레임을 추가할 수 있습니다.
그런 다음, 보호된 API에서 접근 제어를 수행할 때 다음 조건 중 하나를 충족하는 액세스 토큰을 허용해야 합니다:
- RBAC 컨텍스트와 함께 유료 리소스에 접근할 수 있는 스코프를 가집니다.
createdAt
이 공개 베타 단계 종료 시간보다 이전입니다.
사용자 정의 토큰 클레임 기능이 없다면, 보호된 API 리소스에 대한 권한을 확인할 때 Logto Management API를 호출하여 현재 액세스 토큰을 가진 사용자가 특정 API 리소스에 필요한 역할에 해당하는 권한을 가지고 있는지 확인해야 합니다.
유사한 시나리오로, 사용자의 생일이 다가오면 로그인 페이지에 생일 축하 메시지를 표시하는 앱을 가정해 봅시다. 사용자 정의 토큰 클레임을 사용하여 토큰 페이로드에 생일 필드를 추가하여 특정 메시지를 표시할지 여부를 결정할 수 있습니다.
수동으로 토큰 발급 차단하기
Joe가 온라인 게임을 운영하고 있으며 Logto를 아이덴티티 및 접근 관리 (IAM) 시스템으로 사용한다고 가정해 봅시다.
이 게임은 게임 시간을 구매하기 위해 충전이 필요하다고 가정합니다. Joe는 각 사용자의 잔액을 자신의 게임 서비스에 기록하고 게임 시간이 누적됨에 따라 지속적으로 잔액을 차감합니다. Joe는 계정 잔액이 소진되면 플레이어가 로그아웃되도록 강제하여 충전을 유도하고 싶습니다.
이 시점에서 Joe는 Logto가 제공하는 사용자 정의 토큰 클레임 기능을 사용하여 이를 달성할 수 있습니다:
- 스크립트에서 외부 API 호출을 통해 Joe의 게임 서버에서 현재 플레이어의 잔액을 가져올 수 있습니다 외부 데이터 가져오기.
- 잔액이 0 이하인 경우,
api.denyAccess()
메서드를 사용하여 토큰 발급을 차단할 수 있습니다.
이 시점에서 새로운 유효한 액세스 토큰을 얻을 수 없으므로 플레이어는 게임에서 강제로 로그아웃됩니다.