메인 콘텐츠로 이동

Age Gate & Verifiable Parental Consent

이 가이드는 몇 단계만으로 Age Gate & VPC 위젯을 구현하는 방법을 안내하여 규제 요구사항을 빠르게 충족하면서 어린이와 부모 모두에게 원활한 사용자 경험을 제공합니다.

End-to-end Widget은 단일 인터페이스에서 완전한 컴플라이언스 플로우를 처리하는 포괄적인 솔루션으로, 연령 게이트, VPC, 데이터 알림, 권한 및 기본 설정을 모두 하나의 원활한 경험으로 다룹니다. 이 위젯은 부모가 자녀의 기기 또는 자신의 기기에서 사용할 수 있어 동의 프로세스에 최대한의 유연성을 제공합니다.

Age Gate이란 무엇인가요?

Age Gate은 연령 제한 콘텐츠, 기능 또는 서비스에 대한 액세스를 허용하기 전에 사용자의 나이를 수집하고 검증하는 데 사용되는 메커니즘입니다. Age Gate은 미성년자의 디지털 콘텐츠 액세스를 관리하는 법률의 컴플라이언스를 보장하기 위해 많은 관할권에서 규제 요구사항입니다.

Age Gate은 다음과 같은 중요한 목적을 제공합니다:

  • 규제 컴플라이언스: 다양한 관할권에서 연령 검증의 법적 요구사항 충족
  • 콘텐츠 보호: 미성년자가 부적절한 콘텐츠에 액세스하는 것을 방지
  • 데이터 프라이버시: COPPA, GDPR-K 등의 규정에 따라 어린이 데이터를 적절히 처리
  • 부모 제어: 부모가 자녀의 디지털 액세스에 대해 정보에 입각한 결정을 내릴 수 있도록 함
관할권 인식 지능

사용자의 관할권을 제공함으로써, End-to-end Widget은 자동으로 나이 수집의 최적 방법을 결정하고(아직 제공되지 않은 경우) 해당 관할권의 특정 규정에 따라 VPC가 필요한지 지능적으로 판단합니다. 이를 통해 복잡한 관할권 로직을 구현할 필요 없이 컴플라이언스를 보장할 수 있습니다.

Verifiable Parental Consent(VPC)이란 무엇인가요?

Verifiable Parental Consent(VPC)는 부모나 신뢰할 수 있는 성인이 어린이의 디지털 콘텐츠, 서비스 또는 기능에 대한 액세스에 대해 정보에 입각한 동의를 제공할 수 있도록 보장하는 규제 요구사항입니다. 어린이가 연령 제한 콘텐츠에 액세스를 시도할 때, 시스템은 액세스가 허용되기 전에 부모의 승인이 필요한 Challenge를 생성합니다.

VPC 플로우는 일반적으로 다음을 포함합니다:

  1. 나이 수집: 적절한 방법을 통해 어린이의 나이 결정
  2. Challenge 생성: 부모 승인이 필요한 경우 동의 Challenge 생성
  3. 부모 알림: 다양한 채널(이메일, QR 코드 등)을 통해 부모에게 알림
  4. 동의 처리: 부모가 요청을 검토하고 승인/거부
  5. 세션 관리: 동의 결과에 따라 어린이의 권한 생성 또는 업데이트

사전 요구사항

시작하기 전에 다음이 필요합니다:

  1. k-ID Product: k-ID Compliance Studio에서제품 생성 및 구성
  2. API Key: 제품의 개발자 설정 페이지에서 API 키 생성
  3. Webhook Endpoint (선택사항이지만 권장): Challenge 및 세션 이벤트를 수신할 보안 HTTPS 엔드포인트 설정. 자세한 내용은 Webhooks를 참조하세요.

1단계: Age Gate & VPC 플로우 시작

/widget/generate-e2e-url API를 호출하여 전체 VPC 플로우를 처리하는 End-to-end 위젯 URL을 생성합니다. 이는 사용자가 나이 수집 및 부모 동의 프로세스를 완료하는 데 사용할 고유 URL을 반환합니다.

API 키와 함께 대화형 Swagger 문서를 사용하여 Age Gate & VPC 위젯 URL을 빠르게 생성할 수 있습니다.

중요: 구현의 경우 API 키가 클라이언트 측 코드에서 노출되는 것을 방지하기 위해 서버 간 호출이어야 합니다.

요청 예시

POST /api/v1/widget/generate-e2e-url
Content-Type: application/json
Authorization: Bearer your-api-key

{
"jurisdiction": "US-CA"
}

구성 플래그

선택적 flags 매개변수를 사용하여 플로우의 어떤 부분을 건너뛸지 사용자 정의할 수 있습니다:

  • skipDataNotices: 데이터 알림 및 동의 수집 건너뛰기
  • skipVerification: 연령 검증 방법 건너뛰기 (나이가 이미 검증된 경우 유용)
  • skipPermissions: 권한 관리 건너뛰기
  • skipPreferences: 기본 설정 건너뛰기

응답 예시

{
"id": "7854909b-9124-4bed-9282-24b44c4a3c97",
"url": "https://family.k-id.com/widget?token=eyJhbGciOiJFUzM4NCIs..."
}

2단계: Age Gate & VPC 위젯 표시

반환된 URL을 사용하여 웹사이트나 앱에 iframe을 생성합니다. 사용자는 이 인터페이스를 통해 나이 수집 및 부모 동의 프로세스를 완료하며, 사용 가능한 방법이 관할권 요구사항에 따라 자동으로 적응됩니다.

HTML 구현

<div id="vpc-container">
<iframe
id="vpc-widget"
src="WIDGET_URL"
width="100%"
height="600"
frameborder="0"
allow="camera;payment;publickey-credentials-get;publickey-credentials-create">
</iframe>
</div>

iframe은 다음과 같은 여러 검증 방법을 사용자에게 제공합니다:

  • AgeKey: 초기 검증 프로세스 후 생성되는 재사용 가능하고 익명의 나이 증명
  • 얼굴 나이 추정: 디바이스 카메라를 사용한 개인정보 보호 나이 추정
  • ID 문서 검증: 정부 발급 ID 검증

사용 가능한 구체적인 방법은 관할권과 제품 구성에 따라 다릅니다. 자세한 내용은 검증 방법을 참조하세요

위젯은 사용자에게 다음을 제공합니다:

  • 나이 수집: 관할권에 적합한 나이 수집 방법
  • 데이터 알림: 제품 구성에 따라 수락할 데이터 알림
  • 권한: 제품 구성에 따라 관리할 권한
  • 부모 동의 Challenge: 사용자가 미성년자로 판단된 경우 부모 승인을 위한 Challenge 생성

구체적인 플로우는 관할권과 제품 구성에 따라 다릅니다.

3단계: Challenge 및 세션 이벤트 처리

부모 동의를 위한 Challenge가 생성되면 결과를 처리해야 합니다. 세 가지 방법으로 Challenge 및 세션 결과를 받을 수 있습니다:

옵션 A: 실시간 JavaScript 이벤트 (클라이언트 측)

const handleMessage = (event) => {
const message = event.data;

if (message.eventType === "Widget.AgeGate.Challenge") {
if (message.data.status === "PASS") {
// 부모가 동의 승인 - 액세스 허용
console.log("동의 승인됨:", message.data.sessionId);
grantAccess(message.data.sessionId);
} else if (message.data.status === "FAIL") {
// 부모가 동의 거부 - 액세스 제한
console.log("동의 거부됨");
restrictAccess();
}
}
};

window.addEventListener("message", handleMessage);

옵션 B: Webhook 알림 (서버 측)

Webhook 엔드포인트 구성하여 Challenge.StateChangeSession.ChangePermissions 이벤트 수신:

Challenge.StateChange 이벤트:

{
"eventType": "Challenge.StateChange",
"data": {
"id": "683409f1-2930-4132-89ad-827462eed9af",
"productId": 42,
"status": "PASS",
"sessionId": "0ad1641f-c154-4cc2-8bb2-74dbd0de7723",
"approverEmail": "parent@example.com",
"kuid": "123456"
}
}

Session.ChangePermissions 이벤트:

{
"eventType": "Session.ChangePermissions",
"data": {
"id": "78c299b2-5c33-4bde-84fe-8fc950fc7a96",
"productId": 42
}
}

옵션 C: 폴링 (대안 방법)

Challenge ID를 사용하여 Challenge 상태 조회:

GET /api/v1/challenge/get-status?id=683409f1-2930-4132-89ad-827462eed9af

Response:
{
"id": "683409f1-2930-4132-89ad-827462eed9af",
"status": "PASS",
"sessionId": "0ad1641f-c154-4cc2-8bb2-74dbd0de7723"
}

Webhook 구성

Age Gate & VPC 위젯의 경우, Webhook 엔드포인트가 다음을 수신하도록 구성되어 있는지 확인하세요:

  • Challenge.StateChange: 부모 동의가 승인되거나 거부될 때 알림
  • Session.ChangePermissions: 부모가 세션 권한을 수정할 때 알림

이러한 이벤트는 적절한 액세스 제어를 유지하고 부모 동의 요구사항의 컴플라이언스를 보장하는 데 필수적입니다.

다음 단계

Age Gate & VPC 위젯을 구현했으므로, 통합을 향상시키기 위해 다음 리소스를 탐색하세요:

k-ID의 Age Gate & VPC 위젯을 사용하면 부모 동의 규정의 컴플라이언스를 빠르게 달성하면서 가족에게 원활하고 프라이버시 중심의 경험을 제공할 수 있습니다.