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 플로우는 일반적으로 다음을 포함합니다:
- 나이 수집: 적절한 방법을 통해 어린이의 나이 결정
- Challenge 생성: 부모 승인이 필요한 경우 동의 Challenge 생성
- 부모 알림: 다양한 채널(이메일, QR 코드 등)을 통해 부모에게 알림
- 동의 처리: 부모가 요청을 검토하고 승인/거부
- 세션 관리: 동의 결과에 따라 어린이의 권한 생성 또는 업데이트
사전 요구사항
시작하기 전에 다음이 필요합니다:
- k-ID Product: k-ID Compliance Studio에서제품 생성 및 구성
- API Key: 제품의 개발자 설정 페이지에서 API 키 생성
- 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.StateChange 및 Session.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 위젯을 구현했으므로, 통합을 향상시키기 위해 다음 리소스를 탐색하세요:
- API 참조 문 서: 모든 위젯 및 Challenge API의 상세 문서
- Webhooks 설정: 프로덕션 시스템을 위한 강력한 Webhook 처리 구현
- 모범 사례: 보안과 신뢰할 수 있는 사용자 경험을 보장하기 위한 모범 사례 구현
- 출시 전 체크리스트: 출시 전 요구사항 검토
k-ID의 Age Gate & VPC 위젯을 사용하면 부모 동의 규정의 컴플라이언스를 빠르게 달성하면서 가족에게 원활하고 프라이버시 중심의 경험을 제공할 수 있습니다.