권한
k-ID Regulatory Hub의 권한은 전 세계적으로 하나 이상의 관할권에서 규정에 다루어지는 게임 기능의 분류를 나타냅니다. 권한은 게임의 Compliance Studio에서 구성됩니다. 게임 기능과 일치하는 각 k-ID 권한은 Compliance Studio에서 활성화되어야 합니다.
권한이란 무엇인가요?
권한은 부모 동의가 필요하거나 연령 제한이 있을 수 있는 게임의 기능이나 기능을 나타냅니다. 각 권한은 다음을 기반으로 플레이어에 대해 활성화되거나 비활성화될 수 있습니다:
- 연령 및 관할권
- 부모 동의(필요한 경우)
- Compliance Studio의 권한 구성
권한 구조
세션의 각 권한은 다음 구조를 가집니다:
{
"enabled": true,
"managedBy": "PLAYER",
"name": "text-chat-private"
}
일부 권한은 관할권이 기능을 잠금 해제하기 전에 확인된 연령을 요구할 때 verifiedAgeThreshold 필드를 포함합니다:
{
"enabled": false,
"managedBy": "PLAYER",
"name": "loot-boxes-paid-gameplay-impacting",
"verifiedAgeThreshold": 18
}
권한 필드
| 필드 | 타입 | 설명 |
|---|---|---|
name | string | 권한의 식별자 (예: text-chat-private, loot-boxes-paid-gameplay-impacting) |
enabled | boolean | 권한이 현재 플레이어에 대해 활성화되어 있는지 여부 |
managedBy | string | 이 권한을 제어하는 사람. PLAYER, GUARDIAN 또는 PROHIBITED 중 하나 (아래 참조) |
verifiedAgeThreshold | integer | 고위험 권한에만 존재. 이 권한을 활성화하는 데 필요한 최소 확인된 연령. 플레이어의 확인된 연령이 이 임계값을 충족하거나 초과할 때까지 동의와 관계없이 enabled는 false로 유지됨. 고위험 기능을 위한 연령 보증 참조 |
managedBy 값:
PLAYER: 플레이어가 부모 동의 없이 이 권한을 직접 활성화/비활성화할 수 있음.verifiedAgeThreshold가 있는 경우 플레이어는enabled가true가 되기 전에 연령 보증도 통과해야 함.GUARDIAN: 신뢰할 수 있는 성인만 이 권한을 활성화/비활성화할 수 있음.PROHIBITED: 이 권한은 관할권에서 사용할 수 없거나 플레이어의 연령이verifiedAgeThreshold미만이고 현재 연령으로는 잠금 해제할 수 없어 현재 플레이어에 대해 허용되지 않음.
managedBy 필드는 정적이 아닙니다. 플레이어가 연령 상승하고 더 이상 부모 동의가 필요하지 않을 때 이전에 managedBy: "GUARDIAN"이었던 권한이 managedBy: "PLAYER"로 변경될 수 있습니다. 플레이어가 /session/upgrade API를 통해 PLAYER 관리 권한을 활성화하도록 요청하면 Challenge를 생성하지 않고 자동으로 활성화됩니다. 애플리케이션은 시간이 지나면서 세션을 비교하여 이러한 변경 사항을 처리해야 합니다.
누가 권한을 활성화할 수 있나요?
게임 코드는 각 k-ID 권한을 사용하여 게임에서 해당 기능에 대한 액세스를 제어해야 합니다. 권한의 enabled 필드가 true인 경우 게임에서 플레이어에 대해 기능을 활성화할 수 있음을 의미합니다. enabled 필드가 false인 경우 기능을 꺼야 합니다.
일부 관할권에서는 플레이어가 특정 연령인 경우 플레이어가 기능에 액세스하는 것이 허용되더라도 기본적으로 특정 기능을 꺼야 합니다(이를 때때로 "기본값으로 개인정보 보호" 요구 사항이라고 함). 이 경우 enabled는 false이고 managedBy 필드에 PLAYER가 포함됩니다.
기능이 신뢰할 수 있는 성인에 의해서만 켜지거나 꺼질 수 있는 경우 managedBy 필드의 값은 GUARDIAN입니다. 기능이 현재 플레이어에게 허용되지 않는 경우 managedBy 필드에 값 PROHIBITED가 포함됩니다. 이는 플레이어의 관할권에서 기능이 금지되어 있거나 플레이어의 연령이 verifiedAgeThreshold 미만이고 현재 연령에서는 충족될 수 없기 때문입니다. 권한이 PROHIBITED인 경우 비활성화 상태로 표시하는 대신 사용자 경험에서 기능을 완전히 제거하는 것이 적절합니다.
플레이어가 연령 상승하고 더 이상 부모 동의가 필요하지 않을 때 이전에 managedBy: "GUARDIAN"이었던 권한이 managedBy: "PLAYER"로 변경될 수 있어 플레이어가 직접 제어할 수 있게 됩니다. 플레이어가 /session/upgrade API를 통해 PLAYER 관리 권한을 활성화하도록 요청하면 Challenge를 생성하지 않고 자동으로 활성화됩니다. 게임은 플레이어가 이러한 권한을 관리할 수 있는 UI 컨트롤을 제공해야 합니다.
고위험 권한과 연령 보증
일부 권한은 동의 이상의 것이 필요합니다: 확인된 연령이 필요합니다. 확인된 연령은 단순히 자체 신고된 생년월일이 아닌 강력한 확인 경로(예: 정부 ID로 확인된 플랫폼 신호 또는 AgeKit+ Challenge)를 통해 확인된 연령입니다.
이러한 권한에는 verifiedAgeThreshold 정수 필드가 포함됩니다. 현재 브라질(BR)에 적용됩니다:
| 권한 | verifiedAgeThreshold |
|---|---|
profiling | 18 |
targeted-ads | 18 |
loot-boxes-paid-cosmetic-only | 18 |
loot-boxes-paid-gameplay-impacting | 18 |
direct-marketing | 12 |
표준 권한과의 차이점
| 동작 | 표준 (GUARDIAN 관리) | 고위험 (verifiedAgeThreshold) |
|---|---|---|
| 보호자 동의만으로 잠금 해제 | 예 | 아니오 |
| 연령 게이트에서 확인된 플랫폼 신호로 충족 가능 | 아니오 | 예 |
| 아직 충족되지 않은 경우 연령 보증 Challenge 필요 | 아니오 | 예 |
플레이어가 너무 어릴 때 PROHIBITED로 표시 | 예 (관할권 금지) | 예 (연령이 임계값 미만) |
verifiedAgeThreshold 충족 방법
권한의 임계값을 충족하는 두 가지 방법이 있습니다:
-
연령 게이트에서 확인된 플랫폼 신호. 플랫폼 연령 신호가
POST /age-gate/check에 전달되고 신호가 확인된 것으로 간주되는 경우(예: Apple iOSgovernmentIDChecked또는 Google PlayVERIFIED)ageLow >= verifiedAgeThreshold이면, k-ID가 세션에ageVerification을 기록하고 권한이 즉시enabled: true가 됩니다. -
/session/upgrade를 통한 연령 보증. 임계값이 아직 충족되지 않은 경우, 권한 이름으로POST /session/upgrade를 호출하면 표준 부모 동의 Challenge 대신CHALLENGE_SESSION_UPGRADE_BY_AGE_ASSURANCEChallenge가 트리거됩니다. 플레이어는 AgeKit+를 통해 연령 확인을 완료하고 성공 시 권한이 잠금 해제됩니다.
플레이어가 처음에 임계값 미만의 연령을 제공하고 나중에 이의를 신청하려는 경우, k-ID 플랫폼 신호를 사용하여 연령 게이트를 다시 시작하는 방법을 포함한 전체 복구 흐름은 고위험 기능을 위한 연령 보증을 참조하세요。
게임 기능에 권한 매칭
k-ID Regulatory Hub의 권한은 전 세계적으로 하나 이상의 관할권에서 규정에 다루어지는 게임 기능의 분류를 나타냅니다. 권한은 게임의 Compliance Studio에서 구성됩니다. 게임 기능과 일치하는 각 k-ID 권한은 Compliance Studio에서 활성화되어야 합니다. 선택한 k-ID 권한은 부모가 자녀가 게임을 플레이할 수 있도록 동의할 때 부모에게 제시됩니다.
k-ID 권한에 매핑된 게임의 기능을 표시할 때 Session을 확인하여 기능이 활성화되어 있는지, 플레이어가 기능을 켤 수 있는지 확인해야 합니다.
사용 가능한 권한
다음 권한은 Compliance Studio에서 사용할 수 있습니다:
소셜 권한
- 온라인 멀티플레이어 (
multiplayer) - 리더보드 및 순위 (
leaderboards-and-rankings) - 그룹 가입 (
join-groups) - 공개 프로필 (
public-profile) - 사용자 정의 아바타 (
custom-avatar) - 사용자 정의 사용자 이름 (
custom-username) - 텍스트 채팅(비공개) (
text-chat-private) - 텍스트 채팅(공개) (
text-chat-public) - 음성 채팅 (
voice-chat) - 비디오 채팅 (
video-chat) - 온라인 상태 (
online-status) - 공개 친구 목록 (
public-friend-list) - 친구 요청 보내기/수락 (
send-accept-friend-requests) - 타사 채팅 링크 (
link-to-third-party-chat) - 가상 이벤트 (
virtual-events) - 소셜 미디어 공유 (
share-to-social-media)
마케팅 권한
- 개인화된 추천 (
personalized-recommendations) - 타겟 광고 (
targeted-ads): 브라질에서verifiedAgeThreshold: 18필요 - 프로파일링 (
profiling): 브라질에서verifiedAgeThreshold: 18필요 - 푸시 알림 (
push-notifications) - 직접 마케팅 (
direct-marketing): 브라질에서verifiedAgeThreshold: 12필요 - 포럼 (
forums)
상거래 권한
- 게임 내 구매 (
in-game-purchases) - 루트 박스 유료 코스메틱 전용 (
loot-boxes-paid-cosmetic-only): 브라질에서verifiedAgeThreshold: 18필요 - 루트 박스 유료 게임플레이 영향 (
loot-boxes-paid-gameplay-impacting): 브라질에서verifiedAgeThreshold: 18필요 - 루트 박스 컴푸 가차 (
loot-boxes-kompu-gacha) - 선물 보내기 (
send-gifts) - 시뮬레이션 도박 (
simulated-gambling) - 가상 재산 소유권 (
virtual-property-ownership)
콘텐츠 생성 또는 데이터 공유 권한
- 카메라 액세스 (
camera-access) - 게임 클립 스크린샷 공유 (
share-game-clips-screenshots) - 사진/비디오 공유 (
photo-video-sharing) - 정확한 위치 공유 (
real-time-location-sharing) - 사용자 생성 콘텐츠 (
mods) - 게임플레이 스트리밍 (
gameplay-streaming) - 게임플레이 녹화 (
gameplay-recording) - 타사 스트리밍 앱 링크 (
link-to-third-party-streaming-app)
고급 권한
- AI 생성 아바타 (
ai-generated-avatars) - 증강 현실 (
augmented-reality) - 성숙한 언어 (
mature-language) - 모션 데이터 (
motion-data) - AI 챗봇 (
ai-chatbot)
추가 권한 요청
플레이어가 권한이 있는 세션을 받은 후 추가 권한을 허용하고 싶을 수 있습니다. 권한은 다음과 같은 이유로 허용되지 않을 수 있습니다:
- 권한이 기본적으로 활성화되기 위한 연령 임계값 미만입니다.
- 권한에 필요한 절대 최소 연령 미만입니다.
- 권한은 부모/보호자의 동의가 있어야만 활성화할 수 있으며 동의 프로세스 중에 활성화되지 않았습니다.
- 권한에 아직 충족되지 않은
verifiedAgeThreshold가 있습니다(세션에 확인된 플랫폼 연령 신호가 기록되지 않음).
세션 업그레이드 API 사용
/session/upgrade API를 사용하여 추가 권한을 활성화할 수 있습니다. 생성되는 Challenge 유형은 권한에 따라 다릅니다:
PLAYER관리 권한은 Challenge 없이 즉시 활성화됩니다.GUARDIAN관리 권한은 신뢰할 수 있는 성인이 완료해야 하는CHALLENGE_PARENTAL_CONSENTChallenge를 생성합니다.verifiedAgeThreshold가 있는 권한은CHALLENGE_SESSION_UPGRADE_BY_AGE_ASSURANCEChallenge를 생성합니다. 플레이어는 부모 동의 대신 AgeKit+를 통해 연령 확인을 완료합니다. 전체 흐름은 고위험 기능을 위한 연령 보증을 참조하세요.
요청 예시
POST /api/v1/session/upgrade
Content-Type: application/json
Authorization: Bearer your-api-key
{
"sessionId": "608616da-4fd2-4742-82bf-ec1d4ffd8187",
"requestedPermissions": [
{
"name": "voice-chat"
}
]
}
Challenge가 있는 응답 예시
권한에 보호자 동의가 필요한 경우 응답에 Challenge가 포함됩니다:
{
"status": "CHALLENGE",
"challenge": {
"challengeId": "683409f1-2930-4132-89ad-827462eed9af",
"oneTimePassword": "ABC123",
"type": "CHALLENGE_PARENTAL_CONSENT",
"url": "https://family.k-id.com/authorize?otp=ABC123"
}
}
Challenge가 없는 응답 예시
요청된 모든 권한을 플레이어가 활성화할 수 있는 경우 응답에 업데이트된 세션이 포함됩니다:
{
"status": "PASS",
"session": {
"sessionId": "608616da-4fd2-4742-82bf-ec1d4ffd8187",
"permissions": [
{
"enabled": true,
"managedBy": "PLAYER",
"name": "voice-chat"
}
]
}
}
부모 동의 요청
권한을 활성화하기 위해 신뢰할 수 있는 성인 동의가 필요한 경우 응답에 challenge가 포함됩니다. 이 Challenge는 초기 연령 게이트 프로세스와 유사하게 QR 코드, OTP 또는 이메일을 사용하여 공유할 수 있습니다. 자세한 내용은 Challenge를 참조하세요.
생활 품질 차이 중 하나는 /challenge/send-email API를 이메일 주소를 지정하지 않고 사용할 수 있으며 API가 플레이어에 대한 권한을 가장 최근에 승인한 신뢰할 수 있는 성인에게 이메일을 보낸다는 것입니다. 이를 통해 플레이어는 자신의 이메일 주소를 지정하지 않고 권한 변경을 요청할 수 있습니다. API를 호출하기 전에 세션의 hasApproverEmail 플래그를 확인하여 세션에 이미 연결된 이메일 주소가 있는지 확인할 수 있습니다. 연결된 이메일 주소를 찾을 수 없는 경우 /challenge/send-email API는 INVALID_EMAIL 오류 코드로 응답하며 QR 코드 제공, OTP 제공 또는 플레이어에게 신뢰할 수 있는 성인의 이메일 주소를 입력하도록 요청하는 것과 같은 다른 방법으로 대체해야 합니다.
업그레이드 흐름 처리
- 권한 확인: 업그레이드를 요청하기 전에 현재 세션을 확인하여 사용 가능한 권한과 보호자 동의가 필요한 권한 확인
- 업그레이드 요청: 요청된 권한으로
/session/upgrade호출 - Challenge 처리: Challenge가 반환되면 초기 VPC 흐름과 동일한 워크플로 따르기
- 세션 업데이트: 동의가 부여되면
/session/get를 사용하여 업데이트된 세션 검색