Policy 18+
Objetivo
Entender como configurar a Presentation Definition para verificação de idade (18+) usando o padrão OpenID4VP.
O que é uma Presentation Definition?
A Presentation Definition (PD) é um documento JSON que descreve quais credenciais e campos você quer que o cidadão apresente. Ela segue o padrão DIF Presentation Exchange.
No caso do VerificaIdade, a PD solicita uma credencial que contenha ageOver18: true.
Presentation Definition para idade 18+
{
"id": "age-verification-18-plus",
"input_descriptors": [
{
"id": "age_credential",
"format": {
"vc+sd-jwt": {
"sd-jwt_alg_values": ["ES256"]
}
},
"constraints": {
"fields": [
{
"path": ["$.ageOver18"],
"filter": {
"type": "boolean",
"const": true
}
}
]
}
}
]
}Esta é uma Presentation Definition ilustrativa. A definição exata depende do tipo de credencial emitida pelo governo e do formato suportado. Consulte a documentação do emissor para os campos corretos.
Como usar no SDK
Opção 1 — Inline (passar diretamente)
<OpenID4VPVerification
// ...
presentationDefinition={{
id: 'age-verification-18-plus',
input_descriptors: [/* ... */]
}}
/>
Opção 2 — Pré-cadastrada no Service
Se a Presentation Definition estiver cadastrada no INJI Verify Service, use o ID:
<OpenID4VPVerification
// ...
presentationDefinitionId="age-verification-18-plus"
/>
Use uma ou outra opção, nunca ambas. O SDK rejeita se ambas forem fornecidas.
O que você recebe
Verificação com sucesso
[
{
"vc": { "...conteúdo da credencial..." },
"vcStatus": "SUCCESS"
}
]Credencial inválida
[
{
"vc": { "...conteúdo da credencial..." },
"vcStatus": "INVALID"
}
]Credencial expirada
[
{
"vc": { "...conteúdo da credencial..." },
"vcStatus": "EXPIRED"
}
]O que o INJI Verify Service valida
- Assinatura criptográfica — a credencial foi emitida por um emissor confiável?
- Formato — a credencial segue o padrão esperado (SD-JWT, CWT)?
- Expiração — a credencial ainda é válida?
- Revogação — a credencial foi revogada?
- Constraints — os campos solicitados na PD foram satisfeitos?
Minimização de dados
A Presentation Definition solicita apenas o campo ageOver18. Usando SD-JWT (Selective Disclosure), o cidadão pode apresentar apenas esse campo sem revelar nome, data de nascimento ou outros dados pessoais.
Isso é privacy by design. Você confirma que a pessoa tem 18+ sem saber a idade exata ou qualquer outro dado pessoal.
Próximo passo
Entenda as práticas de Segurança e LGPD.