Pular para o conteúdo principal
Didit levanta US$ 7,5 milhões para construir a infraestrutura para identidade e fraude
Didit
Voltar para o blog
Blog · 6 de outubro de 2026

Verificador OpenID4VP: aceitar a carteira europeia de identidade digital (EUDI Wallet)

Como funciona o verificador OpenID4VP para a EUDI Wallet: objetos de solicitação, consultas DCQL, modos de resposta, verificações SD-JWT VC e mdoc, regras HAIP no direito da UE, erros comuns e onde testar.

Por DiditAtualizado
openid4vp-verifier-cover.png

Em resumo

O OpenID4VP (OpenID for Verifiable Presentations) é o protocolo que um verificador usa para solicitar credenciais a uma carteira digital e receber de volta uma apresentação assinada. A versão 1.0 tornou-se uma OpenID Final Specification em 10 de julho de 2025, e a carteira europeia de identidade digital (EUDI Wallet) o utiliza para apresentação remota.[2][3]

  • Você envia uma solicitação assinada com uma consulta DCQL. A carteira retorna um VP Token.
  • Você mesmo verifica a assinatura do emissor, as divulgações, a vinculação de chave e a revogação.
  • Para a EUDI Wallet, o direito da UE acrescenta regras de certificados e de registro.

Última revisão: 5 de outubro de 2026 · Não constitui aconselhamento jurídico

O OpenID4VP é a forma como um site ou aplicativo pede a uma carteira que comprove algo sobre uma pessoa, como o nome ou a data de nascimento. O verificador informa quais credenciais e atributos deseja, o usuário aprova na carteira e a carteira retorna uma apresentação que o verificador confere criptograficamente. Nas palavras da própria especificação, ela "define um protocolo para solicitar e apresentar Credenciais".[1]

Este guia é para desenvolvedores que estão construindo um verificador OpenID4VP para a EUDI Wallet: o objeto de solicitação, DCQL, modos de resposta, fluxos entre dispositivos, verificações de SD-JWT VC e mdoc, as regras HAIP no direito da UE, erros comuns e onde testar.

OpenID4VP em palavras simples

O OpenID4VP reaproveita o formato de uma solicitação de autorização OAuth 2.0. O verificador solicita o tipo de resposta vp_token, e uma resposta bem-sucedida deve incluir um parâmetro vp_token com as apresentações.[1] Não há código nem token de acesso a trocar: os dados chegam na própria resposta.

A carteira autentica a parte utilizadora, verifica se ela não pede mais do que registrou, coleta a aprovação do usuário e assina a apresentação. Em seguida, a parte utilizadora verifica a assinatura do emissor, o status de revogação e a vinculação ao dispositivo.[3] Os dados de identificação pessoal (PID) são emitidos em dois formatos, SD-JWT VC e ISO/IEC mdoc, e ambos usam hashes com salt para que o usuário possa compartilhar alguns atributos e ocultar os demais.[5][3]

  1. 10 de julho de 2025Especificação finalOpenID4VP 1.0 aprovado.
  2. 22 de julho de 2026PublicaçãoCIR 2026/1731 (adotado em 15 de julho de 2026) no Jornal Oficial.
  3. 23 de julho de 2026ARF v3.0.0Versão atual da arquitetura.
  4. 24 de dezembro de 2026CarteirasPelo menos uma por Estado-Membro.
  5. 24 de dezembro de 2027AceitaçãoPartes utilizadoras privadas regulamentadas.

Da especificação final até a data de aceitação pelo setor privado.[2][3][4][5]

Como funciona a troca com um verificador OpenID4VP

O OpenID4VP publica um desenho de referência para o modo de resposta direct_post, em que a carteira envia a resposta por POST a um endpoint do servidor em vez de enviá-la pelo navegador.[1]

Navegador do usuário Frontend do verificador Endpoint de resposta Carteira
1Inicia a verificação
2Abre a transação
3IDs da transação e da solicitação
4Solicitação com nonce, DCQL

A carteira verifica o verificador, o usuário consente

5POST do VP Token, state
6Redirecionamento com código de resposta
7Volta ao site
8Busca com o código
9VP Token

O design de referência direct_post no OpenID4VP 1.0, seção 13.3, simplificado.[1]

  • Gere um nonce de "pelo menos 16 bytes novos e criptograficamente aleatórios" por requisição.
  • Envie o request-id do endpoint de resposta para a carteira como state.
  • Retorne uma URI de redirecionamento com um response_code novo assim que a carteira fizer o POST.
  • Busque o VP Token com o transaction-id e esse código e depois verifique o nonce.

O response_code impede a fixação de sessão, em que um invasor repassa a sua requisição para a carteira de uma vítima. A especificação observa que ele não ajuda em fluxos entre dispositivos e recomenda mecanismos adicionais nesses casos.[1]

Vídeo pendente: flow-eudi-openid4vp

Uma apresentação OpenID4VP a partir de uma EUDI Wallet, do início ao fim.

O objeto de requisição do OpenID4VP e os identificadores de cliente

O client_id começa com um Client Identifier Prefix que indica à carteira como autenticar o verificador.[1] Requisições grandes trafegam por referência: a carteira busca o objeto de requisição assinado em um request_uri. Para QR codes, a especificação recomenda direct_post com request_uri, já que a requisição "pode não caber em um QR code".[1]

PrefixoComo a carteira autentica o verificadorRequisição assinada
redirect_uriO identificador é a URI de redirecionamento ou de respostaNão pode ser assinada
x509_san_dnsNome DNS no SAN do certificado folhaObrigatória
x509_hashHash SHA-256 do certificado folhaObrigatória
decentralized_identifierChave do DID DocumentObrigatória
verifier_attestationJWT de atestação de um emissor em que a carteira confiaObrigatória
openid_federationCadeia de confiança da federaçãoVia OpenID Federation

Prefixos de Client Identifier, OpenID4VP 1.0, seção 5.9.[1]

Para verificadores EUDI, o direito da UE define o prefixo: o certificado final "para uso com o Client Identifier Prefix x509_hash deve ser um certificado de acesso de RP conforme especificado na ETSI TS 119 475", e um elemento de verifier_info "deve incluir o certificado de registro".[5]

Consultas DCQL: peça o que você registrou

A Digital Credentials Query Language (DCQL) é a consulta em JSON que indica as credenciais e os atributos que você quer. Ela contém um array credentials obrigatório e um array credential_sets opcional. Cada consulta de credencial precisa de um id, um format e um objeto meta.[1] O exemplo de SD-JWT VC da especificação:[1]

{ "credentials": [ { "id": "my_credential", "format": "dc+sd-jwt", "meta": { "vct_values": [ "https://credentials.example.com/identity_credential" ] }, "claims": [ {"path": ["last_name"]}, {"path": ["first_name"]}, {"path": ["address", "street_address"]} ] } ] }

Para um mdoc, o formato é mso_mdoc e meta traz um doctype_value.[1] Para o PID, substitua pelo tipo e pelos nomes de atributos dele. Os atributos obrigatórios do PID são sobrenome, nome, data de nascimento, local de nascimento e nacionalidade.[7]

  • require_cryptographic_holder_binding tem como padrão true. Mantenha assim: isso faz a carteira devolver uma prova de vinculação de chave.[1]
  • trusted_authorities apenas filtra o que a carteira oferece. Os verificadores "devem verificar por conta própria se o emissor de uma apresentação recebida é confiável".[1]
  • As partes utilizadoras "não podem solicitar aos usuários quaisquer dados além" do que registraram, e a carteira verifica isso.[4][3]

Modos de resposta do OpenID4VP

O modo de resposta define como o VP Token volta. O padrão para vp_token é fragment, no fragmento da URI de redirecionamento.[1]

Modo de respostaPara onde vai o VP TokenCriptografado
fragmentFragmento da URI de redirecionamento, pelo navegadorNão
direct_postHTTP POST para a response_uriNão
direct_post.jwtHTTP POST de um JWT criptografadoSim
dc_apiDe volta pela Digital Credentials APINão
dc_api.jwtIgual, criptografadoSim

Modos de resposta no OpenID4VP 1.0.[1]

Com direct_post, response_uri é obrigatório e redirect_uri deve estar ausente. Caso contrário, a carteira retorna invalid_request.[1] O EVO Wallet da Moldávia, por exemplo, documenta o OpenID4VP 1.0 com direct_post.jwt em um fluxo no mesmo dispositivo, mdoc ISO/IEC 18013-5 perfilado conforme o OpenID4VC HAIP 1.0 e uma IETF Token Status List para revogação.[11]

Mesmo dispositivo, entre dispositivos e a Digital Credentials API

O ARF lista as combinações remotas suportadas: OpenID4VP combinado com um mecanismo de transmissão baseado em redirecionamentos e esquemas de URI personalizados; OpenID4VP ou ISO/IEC 18013-7 combinado com a W3C Digital Credentials API; e, opcionalmente, ISO/IEC 18013-7 com redirecionamentos e esquemas de URI personalizados.[3]

Mesmo dispositivo

Esquema de URI personalizado

  • O navegador entrega openid4vp:// ao sistema operacional
  • A carteira abre no mesmo celular

ARF 4.4.3.1

Entre dispositivos

QR code

  • O desktop exibe um QR code para escanear
  • Exposto a phishing e retransmissão

ARF 4.4.3.1

API do navegador

Digital Credentials API

  • O navegador repassa a origem verificada
  • Ativada por padrão no Chrome 141

Apêndice A do OpenID4VP

Três formas pelas quais uma carteira recebe uma solicitação OpenID4VP.[3][1][10]

O ARF afirma que esquemas de URI personalizados "não são recomendados para fluxos entre dispositivos" e indica a Digital Credentials API como alternativa.[3] Pela API, a carteira conhece a origem do verificador conforme autenticada pelo navegador, "o que é importante para a resistência a phishing".[1] A especificação do W3C ainda é um rascunho.[9] O que o usuário vê no celular:

Navegador: example.com

Verifique sua identidade

Este site solicita seus dados à sua carteira.

1O navegador envia uma URI openid4vp:// ao sistema operacional.[3]

Carteira europeia de identidade digital (EUDI Wallet)

Verificando a solicitação

A carteira abre e se conecta à parte utilizadora.

2A carteira autentica a parte utilizadora e verifica o que ela registrou.[3]

EUDI Wallet

Escolha o que compartilhar

  • SobrenomeCompartilhado
  • Data de nascimentoCompartilhado
  • EndereçoNão compartilhado

Compartilhar

3O usuário aprova os atributos.[3]

Navegador: example.com

Dados recebidos

4A carteira envia os dados e devolve o usuário.[1]

Como verificar uma apresentação SD-JWT VC passo a passo

Uma apresentação SD-JWT VC contém o JWT assinado pelo emissor, as divulgações que o usuário revelou e um Key Binding JWT. O verificador "DEVE validar cada Verifiable Presentation individual" e rejeitar qualquer uma com o nonce errado.[1]

1Verifique a assinatura do emissor

A chave remete, por cadeia, a um provedor de PID ou de atestados confiável.

2Confira cada divulgação

O hash de cada uma corresponde a um digest no payload assinado.

3Verifique o Key Binding JWT

Assinatura com a chave do titular; nonce e audience conferem.

4Verifique a revogação

Consulte a lista de status do emissor.

Todas as verificações são aprovadas

Sim

Use os atributos divulgados

Não

Rejeite e ofereça outro caminho

As verificações do verificador em uma apresentação SD-JWT VC.[1][3]

Assinatura do emissor. O ARF a coloca em primeiro lugar entre as verificações da parte utilizadora. As âncoras de confiança vêm das listas de confiança (ETSI TS 119 612) e das listas de entidades confiáveis (ETSI TS 119 602).[3]

Divulgações. O payload assinado contém um array _sd de digests. Cada divulgação é um salt, um nome de claim e um valor, como ["eluV5Og3gSNII8EYnsxA_A", "family_name", "Doe"].[1] Calcule o hash de cada uma e encontre o digest correspondente. Se não houver correspondência, o emissor não a assinou.

Key Binding JWT. Quando o vínculo com o titular é exigido, a carteira "DEVE retornar um SD-JWT com um Key Binding JWT". O nonce dele deve ser igual ao nonce da sua solicitação, e o aud deve ser igual ao seu Client Identifier ou, na Digital Credentials API, à sua origem com o prefixo origin:.[1] O exemplo da especificação:

{ "nonce": "n-0S6_WzA2Mj", "aud": "x509_san_dns:client.example.org", "iat": 1709838604, "sd_hash": "Dy-RYwZfaaoC3inJbLslgPvMp09bH-clYP_3qbRqtW4" }

Revogação. A parte utilizadora verifica se o provedor "não revogou o PID ou o atestado".[3] A EVO Wallet da Moldávia, por exemplo, documenta uma IETF Token Status List para isso.[11]

Observação

O retrato do PID passa a ser obrigatório somente a partir de 11 de agosto de 2028. Portanto, não planeje uma comparação facial com o retrato da carteira antes dessa data.[5]

Apresentações mdoc via ISO/IEC 18013-7, em resumo

Para um mdoc, o VP Token contém um DeviceResponse da ISO/IEC 18013-5 codificado em base64url, que "contém uma assinatura ou MAC sobre o SessionTranscript", incluindo uma estrutura de handover do OpenID4VP.[1] Esse handover vincula o mdoc à sua solicitação, da mesma forma que o nonce e o audience vinculam um SD-JWT VC.

Atenção

O direito da UE aplica o "Anexo C da ISO/IEC 18013-7:2025" para mdoc via Digital Credentials API.[5] A ISO lista a edição de 2024 da 18013-7 como retirada e substituída. Verifique qual edição a sua biblioteca implementa.[8]

Nossa comparação entre SD-JWT VC e mdoc explica quando cada formato é adequado.

O que o perfil HAIP acrescenta para verificadores EUDI

O High Assurance Interoperability Profile (HAIP) restringe as opções do OpenID4VP. O ARF já o exige para a emissão e afirma que o seu uso "é necessário para garantir a interoperabilidade".[3] Para a apresentação, o CIR 2026/1731 define um "perfil OpenID4VC-HAIP" e um "perfil ISO/IEC-mdoc".[5]

RequisitoPara o seu verificadorFonte
Certificado de acessoAssine com um certificado de acesso de RP x509_hash, ETSI TS 119 475CIR 2026/1731[5]
Certificado de registroInclua-o em verifier_infoCIR 2026/1731[5]
RegistroRegistre-se onde você está estabelecidoeIDAS, Art. 5b(1)[4]
Verificações da carteiraAs unidades de carteira validam certificados de registro somente a partir de 11 de agosto de 2028. Não é um prazo de registroCIR 2026/1731[5]

O certificado de registro "descreve o uso pretendido da parte utilizadora e indica os atributos" que ela registrou, e o regulamento de registro se aplica a partir de 24 de dezembro de 2026.[6] A data de 11 de agosto de 2028 abrange apenas a verificação desse certificado pela carteira, e não o registro.[5] A Alemanha resume assim: uma organização "recebe um certificado de acesso e de registro para a organização e o caso de uso".[12] Nosso guia sobre partes utilizadoras da EUDI Wallet trata do registro em detalhes.

Erros comuns ao criar um verificador OpenID4VP

ErroCorreção
Nonces reutilizados ou curtosPelo menos 16 bytes aleatórios novos por solicitação[1]
Sem verificação de audiênciaCompare aud com seu Client Identifier ou com a origem[1]
Solicitar dados não registradosMonte a consulta DCQL a partir do seu registro[4]
QR codes com URI personalizado entre dispositivosPrefira a Digital Credentials API[3]
Confiar em trusted_authoritiesValide você mesmo o emissor com base nas listas de confiança[1]
Ignorar a revogaçãoVerifique o status todas as vezes[3]
Assinar com o prefixo redirect_uriNão é possível assinar com ele; use x509_hash[1][5]

A carteira também é voluntária: o acesso "não pode, de forma alguma, ser restringido ou tornado desvantajoso" para pessoas que não a utilizam. Por isso, seu verificador coexiste com outra via.[4]

Recursos de teste

Comece pelo software de referência e pelos testes de conformidade antes de testar com as carteiras nacionais.

  • Execute os testes de conformidade em conformance.eudi.dev.[3]
  • Leia a documentação da implementação de referência em docs.eudi.dev. Ela é documentação, não são testes.[3]
  • Estude o verificador de demonstração do Banco Nacional da Moldávia e o seu código-fonte.[13]
  • Consulte a minuta da Digital Credentials API antes de depender da via do navegador.[9]

Para as datas por trás do seu plano de testes, veja prazos da EUDI Wallet para 2026 e 2027.

Como a Didit ajuda na verificação com a EUDI Wallet

A aceitação da EUDI Wallet chega em breve à Didit: ela está no nosso roadmap, alinhada ao cronograma da EUDI Wallet, no mesmo fluxo de trabalho que você usa hoje. Enquanto isso, você já pode verificar pessoas remotamente.

Você mantém suas obrigações como parte utilizadora. A documentação das carteiras mostra como os eIDs são ativados por país.

A Didit fornece

  • Logins com eID nacional e a via documental em um único fluxo de trabalho
  • As evidências de cada verificação

Fica com você

  • Seu registro como parte utilizadora da carteira
  • A decisão de onboarding e suas políticas

Planeje conosco seu caminho para a carteira europeia de identidade digital (EUDI Wallet)

Informe seus países e seu caso de uso e comece hoje com eIDs nacionais e documentos.

Fale conoscoComece grátisLeia a documentação

Pontos principais

  • O OpenID4VP 1.0 é uma especificação final da OpenID desde 10 de julho de 2025.
  • Envie uma consulta DCQL limitada pelo seu registro e um nonce novo.
  • Verifique a assinatura do emissor, cada divulgação, o Key Binding JWT e a revogação.
  • Os verificadores EUDI assinam com um certificado de acesso RP x509_hash.
  • As partes utilizadoras privadas abrangidas aceitam a carteira até 24 de dezembro de 2027.

Perguntas frequentes

O que é o OpenID4VP?

O OpenID for Verifiable Presentations é um protocolo para solicitar e apresentar credenciais. A carteira devolve apresentações assinadas em um VP Token, sem código de autorização nem token de acesso para trocar. A versão 1.0 se tornou uma Especificação Final da OpenID em 10 de julho de 2025.[1][2]

A EUDI Wallet usa o OpenID4VP?

Sim, para apresentação remota, ao lado da ISO/IEC 18013-7. O direito da UE define um perfil OpenID4VC-HAIP e um perfil ISO/IEC-mdoc.[3][5]

O que é a DCQL?

A Digital Credentials Query Language é a consulta JSON que especifica as credenciais e os atributos que um verificador deseja. A carteira devolve as apresentações correspondentes. Para a EUDI Wallet, solicite apenas os atributos que você registrou.[1][4]

Qual modo de resposta um verificador EUDI deve usar?

Um verificador do lado do servidor usa direct_post ou o direct_post.jwt criptografado. Pela Digital Credentials API, os modos são dc_api e dc_api.jwt.[1]

Como verifico o Key Binding JWT?

Confira a assinatura dele com a chave vinculada na credencial e, em seguida, confira o nonce e o público-alvo em relação à sua solicitação. Pela Digital Credentials API, o público-alvo é a sua origem.[1]

Qual prefixo de identificador de cliente os verificadores EUDI usam?

x509_hash, com um certificado de acesso RP conforme a ETSI TS 119 475. O certificado de registro vai em verifier_info.[5]

Posso usar um QR code entre dispositivos?

Pode, mas o ARF não recomenda esquemas de URI personalizados entre dispositivos por causa de ataques de phishing e de retransmissão. Ele indica a Digital Credentials API como alternativa.[3]

Posso fazer a comparação facial com o retrato da carteira?

Ainda não de forma confiável. O retrato passa a ser dado obrigatório do PID somente a partir de 11 de agosto de 2028.[5]

Onde posso testar um verificador OpenID4VP?

Execute os testes de conformidade em conformance.eudi.dev e leia a documentação da implementação de referência em docs.eudi.dev. O banco central da Moldávia também publicou um verificador de demonstração com código-fonte.[3][13]

Fontes

  1. OpenID for Verifiable Presentations 1.0, OpenID Foundation, especificação final.
  2. Especificação final do OpenID for Verifiable Presentations 1.0 aprovada, OpenID Foundation, 10 de julho de 2025.
  3. Architecture and Reference Framework v3.0.0, eu-digital-identity-wallet no GitHub, versão de 23 de julho de 2026.
  4. Regulamento (UE) 2024/1183 (eIDAS 2), EUR-Lex, Jornal Oficial de 30 de abril de 2024.
  5. Regulamento de Execução (UE) 2026/1731 da Comissão, EUR-Lex, Jornal Oficial de 22 de julho de 2026.
  6. Regulamento de Execução (UE) 2025/848 da Comissão sobre o registro das partes utilizadoras de carteiras, EUR-Lex, Jornal Oficial de 7 de maio de 2025.
  7. Regulamento de Execução (UE) 2024/2977 da Comissão sobre os dados de identificação pessoal, EUR-Lex, Jornal Oficial de 4 de dezembro de 2024.
  8. ISO/IEC 18013-7, página da norma na ISO.
  9. Digital Credentials, rascunho do W3C.
  10. Digital Credentials API lançada, Chrome for Developers.
  11. Guia para desenvolvedores da EVO Wallet, Governo da Moldávia, egov4dev.
  12. Perguntas frequentes sobre a EUDI Wallet, eudi-wallet.gov.de.
  13. Verificador de demonstração do BNM, Governo da Moldávia, egov4dev.

O OpenID4VP é a parte da EUDI Wallet com que os desenvolvedores mais lidam, e já é estável o bastante para servir de base para o desenvolvimento. Veja como a Didit aborda a aceitação de carteiras na página da solução EUDI Wallet e o panorama mais amplo na nossa visão geral do eIDAS 2.

Verifique pessoas remotamente enquanto as carteiras são implantadas

Use agora as eIDs nacionais e a rota por documento, e fale conosco sobre a EUDI Wallet.

Comece grátisFale conosco

Infraestrutura para identidade e fraude.

Uma API para KYC, KYB, Monitoramento de Transações e Análise de Carteiras. Integre em 5 minutos.

Peça para uma IA resumir esta página