Verifiable Parental Consent (VPC)
이 가이드는 몇 가지 단계로 VPC 위젯을 구현하는 과정을 안내하여 규제 요구 사항을 빠르게 충족하면서 자녀와 부모 모두에게 원활한 사용자 경험을 제공할 수 있도록 합니다.
k-ID Dev Explorer라는 오픈 소스 개발자 샌드박스를 사용하여 VPC 흐름을 테스트하고 이벤트 로그에서 모든 트래픽을 볼 수 있습니다. 또한 이를 자신의 VPC 구현을 위한 시작점으로 사용할 수 있습니다.
End-to-end Widget은 단일 인터페이스에서 완전한 규정 준수 흐름을 처리하는 포괄적인 솔루션으로, 연령 게이트, VPC, 데이터 고지, 권한 및 기본 설정을 하나의 원활한 경험으로 다룹니다. 이 위젯은 자녀의 기기나 부모 자신의 기기에서 사용할 수 있어 동의 프로세스에 최대한의 유연성을 제공합니다.
연령 게이트란 무엇인가요?
연령 게이트는 연령 제한 콘텐츠, 기능 또는 서비스에 대한 액세스를 허용하기 전에 사용자의 연령을 수집하고 확인하는 데 사용되는 메커니즘입니다. 많은 관할권의 규정에서 미성년자의 디지털 콘텐츠 액세스를 관리하는 법률 준수를 보장하기 위해 연령 게이트를 요구합니다.
연령 게이트는 다음과 같은 여러 중요한 목적을 제공합니다:
- 규제 준수: 다양한 관할권에서 확인에 대한 법적 요구 사항 충족
- 콘텐츠 보호: 미성년자가 부적절한 콘텐츠에 접근하는 것을 방지
- 데이터 개인정보 보호: COPPA, GDPR-K 등 규정에 따라 아동 데이터의 적절한 처리 보장
- 부모 제어: 부모가 자녀의 디지털 액세스에 대해 정보에 입각한 결정을 내릴 수 있도록 함
사용자의 관할권을 제공하면 End-to-end Widget이 자동으로 연령을 수집하는 최적의 방법을 결정하고(아직 제공되지 않은 경우) 해당 관할권의 특정 규정을 기반으로 VPC가 필요한지 지능적으로 결정합니다. 이를 통해 복잡한 관할권 로직을 구현할 필요 없이 규정 준수를 보장합니다.
Verifiable Parental Consent (VPC)란 무엇인가요?
Verifiable Parental Consent (VPC)는 부모나 신뢰할 수 있는 성인이 자녀가 디지털 콘텐츠, 서비스 또는 기능에 접근할 수 있도록 정보에 입각한 동의를 제공할 수 있도록 하는 규제 요구 사항입니다. 자녀가 연령 제한 콘텐츠에 접근하려고 하면 시스템이 액세스가 부여되기 전에 부모 승인이 필요한 Challenge를 생성합니다.
VPC 흐름은 일반적으로 다음을 포함합니다:
- 연령 수집: 적절한 방법을 통해 자녀의 연령 결정
- Challenge 생성: 부모 승인이 필요한 경우 동의 Challenge 생성
- 부모 알림: 다양한 채널(이메일, QR 코드)을 통해 부모에게 알림
- 동의 처리: 부모가 요청을 검토하고 승인/거부
- 세션 관리: 동의 결과를 기반으로 자녀의 권한 생성 또는 업데이트
사전 요구 사항
시작하기 전에 다음이 필요합니다:
- k-ID 제품: k-ID Compliance Studio에서 제품 생성 및 구성
- API 키: Compliance Studio의 제품 개발자 설정 페이지에서 API 키 생성
- 웹훅 엔드포인트 (선택 사항이지만 권장): Challenge 및 세션 이벤트를 받을 보안 HTTPS 엔드포인트 설정. 자세한 내용은 웹훅을 참조하세요.
1단계: VPC 흐름 시작
/widget/generate-e2e-url API를 호출하여 완전한 VPC 흐름을 처리하는 End-to-end 위젯 URL을 생성합니다. 이는 사용자가 연령 수집 및 부모 동의 프로세스를 완료할 수 있는 고유한 URL을 반환합니다.
API 키와 함께 API 참조를 사용하여 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단계: 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 확인
사용 가능한 특정 방법은 관할권과 Compliance Studio의 제품 구성에 따라 다릅니다. 자세한 내용은 확인 방법을 참조하세요.
위젯은 사용자에게 다음을 제공합니다:
- 연령 수집: 관할권에 적절한 연령 수집 방법
- 데이터 고지: Compliance Studio의 제품 구성에 따라 수락할 데이터 고지
- 권한: Compliance Studio의 제품 구성에 따라 관리할 권한
- 부모 동의 Challenge: 사용자가 미성년자로 판단되면 신뢰할 수 있는 성인 승인을 위한 Challenge가 생성됩니다
특정 흐름은 관할권과 Compliance Studio의 제품 구성에 따라 다릅니다.
3단계: Challenge 및 세션 이벤트 처리
부모 동의를 위한 Challenge가 생성되면 결과를 처리해야 합니다. 구현은 클라이언트 측 및 서버 측 방법의 조합을 사용해야 합니다: 클라이언트 측 이벤트는 UI 요소를 제어하는 데 가장 좋지만, 데이터 무결성을 위해 실제 결과는 웹훅이나 /challenge/get-status 호출에서 가져와야 합니다.
클라이언트 측 (DOM 이벤트)
Challenge가 생성되거나 해결될 때 반응형 UI 업데이트를 위해 DOM 이벤트를 사용합니다. 이벤트 구조에 대한 자세한 내용은 Widget.AgeGate.Challenge를 참조하세요.
const handleMessage = (event) => {
const message = event.data;
if (message.eventType === "Widget.AgeGate.Challenge") {
if (message.data.status === "PASS") {
// 부모가 동의 승인 - 즉시 UI 업데이트
console.log("Consent approved:", message.data.sessionId);
updateUI(message.data.sessionId);
} else if (message.data.status === "FAIL") {
// 부모가 동의 거부 - 즉시 UI 업데이트
console.log("Consent denied");
updateUI();
}
}
};
window.addEventListener("message", handleMessage);
서버 측 (웹훅, API 호출)
데이터 무결성과 안정적인 상태 관리를 위해 웹훅이나 API 호출을 사용합니다. 데이터 무결성을 위해 항상 웹훅의 이벤트나 /challenge/get-status 호출로 결과를 확인하세요. DOM 이벤트에만 의존하지 마세요.
웹훅
웹훅 이벤트 구조에 대한 자세한 내용은 Challenge.StateChange 및 Session.ChangePermissions를 참조하세요.
웹훅 엔드포인트를 구성하여 Challenge.StateChange 및 Session.ChangePermissions 이벤트를 받습니다:
Challenge.StateChange 이벤트:
{
"eventType": "Challenge.StateChange",
"data": {
"id": "683409f1-2930-4132-89ad-827462eed9af",
"productId": 42,
"status": "PASS",
"sessionId": "0ad1641f-c154-4c2-8bb2-74dbd0de7723",
"approverEmail": "parent@example.com",
"kuid": "123456"
}
}
Session.ChangePermissions 이벤트:
{
"eventType": "Session.ChangePermissions",
"data": {
"id": "78c299b2-5c33-4bde-84fe-8fc950fc7a96",
"productId": 42
}
}
API 호출
Challenge ID로 /challenge/get-status를 사용하여 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-4c2-8bb2-74dbd0de7723"
}
웹훅 구성
VPC 위젯의 경우 웹훅 엔드포인트가 다음을 받도록 구성되어 있는지 확인하세요:
Challenge.StateChange: 부모 동의가 승인되거나 거부될 때 알림Session.ChangePermissions: 부모가 세션 권한을 수정할 때 알림
이러한 이벤트는 적절한 액세스 제어를 유지하고 부모 동의 요구 사항을 준수하는 데 필수적입니다.
다음 단계는 무엇인가요?
이제 VPC 위젯을 구현했으므로 다음 리소스를 탐색하여 통합을 향상시키세요:
- API 참조 문서: 모든 위젯 및 Challenge API의 상세 문서
- 웹훅 설정: 프로덕션 시스템을 위한 강력한 웹훅 처리 구현
- 모범 사례: 보안 및 안정적인 사용자 경험을 보장하기 위한 모범 사례 구현
- 런칭 전 체크리스트: 라이브 전 요구 사항 검토
k-ID의 VPC 위젯을 사용하면 가족에게 원활하고 개인정보 보호 중심의 경험을 제공하면서 부모 동의 규정을 빠르게 준수할 수 있습니다.