Saltar para o conteúdo principal
Didit angaria 7,5 milhões de dólares para construir a infraestrutura para identidade e fraude
Didit
Voltar ao blog
Blog · 6 de outubro de 2026

Verificador OpenID4VP: aceitação da carteira de identidade digital europeia (EUDI Wallet)

Como funciona um verificador OpenID4VP para a EUDI Wallet: objetos de pedido, consultas DCQL, modos de resposta, verificações SD-JWT VC e mdoc, as 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 utiliza para pedir credenciais a uma carteira digital e receber de volta uma apresentação assinada. A versão 1.0 tornou-se uma OpenID Final Specification a 10 de julho de 2025, e a carteira europeia de identidade digital (EUDI Wallet) utiliza-o para a apresentação remota.[2][3]

  • Envia um pedido assinado com uma consulta DCQL. A carteira devolve um VP Token.
  • É o próprio verificador que valida 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 registo.

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

O OpenID4VP é a forma como um site ou uma aplicação pede a uma carteira que prove algo sobre uma pessoa, como o nome ou a data de nascimento. O verificador indica que credenciais e atributos pretende, o utilizador aprova na carteira e a carteira devolve uma apresentação que o verificador valida criptograficamente. Nas palavras da própria especificação, esta «define um protocolo para pedir e apresentar Credenciais».[1]

Este guia destina-se a programadores que constroem um verificador OpenID4VP para a carteira europeia de identidade digital (EUDI Wallet): o objeto de pedido, a DCQL, os modos de resposta, os fluxos no mesmo dispositivo e entre dispositivos, as verificações de SD-JWT VC e mdoc, as regras HAIP no direito da UE, os erros comuns e onde testar.

O OpenID4VP em termos simples

O OpenID4VP reutiliza a estrutura de um pedido de autorização OAuth 2.0. O verificador pede o tipo de resposta vp_token, e uma resposta bem-sucedida tem de incluir um parâmetro vp_token que contém as apresentações.[1] Não há código nem token de acesso para trocar: os dados chegam na resposta.

A carteira autentica a parte utilizadora, confirma que esta não pede mais do que registou, recolhe a aprovação do utilizador e assina a apresentação. A parte utilizadora valida depois a assinatura do emissor, o estado 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 utilizam hashes com salt para que o utilizador possa partilhar alguns atributos e ocultar os restantes.[5][3]

  1. 10 de julho de 2025Especificação finalOpenID4VP 1.0 aprovado.
  2. 22 de julho de 2026PublicaçãoCIR 2026/1731 (adotado a 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 à data de aceitação pelo setor privado.[2][3][4][5]

Como funciona uma troca com um verificador OpenID4VP

O OpenID4VP publica um modelo de referência para o modo de resposta direct_post, em que a carteira envia a resposta por POST para um endpoint do servidor em vez de a enviar através do navegador.[1]

Navegador do utilizador Frontend do verificador Endpoint de resposta Carteira
1Inicia a verificação
2Abre a transação
3IDs da transação e do pedido
4Pedido com nonce, DCQL

A carteira verifica o verificador e o utilizador dá o consentimento

5POST do VP Token, state
6Redirecionamento com código de resposta
7Regresso ao site
8Obtenção com o código
9VP Token

O modelo de referência direct_post do OpenID4VP 1.0, secção 13.3, simplificado.[1]

  • Gere um nonce de "pelo menos 16 bytes novos e criptograficamente aleatórios" por pedido.
  • Envie à carteira o request-id do endpoint de resposta como state.
  • Devolva um URI de redirecionamento com um response_code novo assim que a carteira enviar a resposta.
  • Obtenha 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 atacante reencaminha o seu pedido para a carteira de uma vítima. A especificação refere que não ajuda entre dispositivos e recomenda mecanismos adicionais nesse caso.[1]

Vídeo pendente: flow-eudi-openid4vp

Uma apresentação OpenID4VP a partir de uma carteira europeia de identidade digital (EUDI Wallet), do início ao fim.

O objeto de pedido OpenID4VP e os identificadores de cliente

O client_id começa com um prefixo de identificador de cliente (Client Identifier Prefix) que indica à carteira como autenticar o verificador.[1] Os pedidos grandes são transmitidos por referência: a carteira obtém o objeto de pedido assinado a partir de um request_uri. Para códigos QR, a especificação recomenda direct_post com request_uri, uma vez que o pedido "pode não caber num código QR".[1]

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

Prefixos de identificador de cliente (Client Identifier Prefixes), OpenID4VP 1.0, secção 5.9.[1]

Para os verificadores EUDI, é o direito da UE que define o prefixo: o certificado folha "para utilização com o prefixo de identificador de cliente x509_hash deve ser um certificado de acesso de parte utilizadora, conforme especificado na ETSI TS 119 475", e um elemento de verifier_info "deve incluir o certificado de registo".[5]

Consultas DCQL: peça o que registou

A Digital Credentials Query Language (DCQL) é a consulta JSON que indica as credenciais e os atributos pretendidos. Contém um array credentials obrigatório e um array credential_sets opcional. Cada consulta de credencial precisa de um id, de um format e de um objeto meta.[1] O exemplo 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 contém um doctype_value.[1] Para o PID, substitua pelo respetivo tipo e pelos respetivos nomes de atributos. Os atributos obrigatórios do PID são apelido, nome próprio, data de nascimento, local de nascimento e nacionalidade.[7]

  • require_cryptographic_holder_binding tem o valor predefinido true. Mantenha-o: faz com que a carteira devolva uma prova de vinculação de chave.[1]
  • trusted_authorities apenas filtra o que a carteira oferece. Os verificadores "têm de verificar, por si próprios, se o emissor de uma apresentação recebida é de confiança".[1]
  • As partes utilizadoras "não podem solicitar aos utilizadores que forneçam quaisquer dados além" dos que registaram, e a carteira verifica.[4][3]

Modos de resposta do OpenID4VP

O modo de resposta determina a forma como o VP Token é devolvido. O valor predefinido para vp_token é fragment, no fragmento do URI de redirecionamento.[1]

Modo de respostaPara onde vai o VP TokenCifrado
fragmentFragmento do URI de redirecionamento, através do navegadorNão
direct_postHTTP POST para o response_uriNão
direct_post.jwtHTTP POST de um JWT cifradoSim
dc_apiDevolvido através da Digital Credentials APINão
dc_api.jwtIgual, mas cifradoSim

Modos de resposta no OpenID4VP 1.0.[1]

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

No mesmo dispositivo, entre dispositivos e a Digital Credentials API

O ARF enumera 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]

No mesmo dispositivo

Esquema de URI personalizado

  • O navegador entrega openid4vp:// ao sistema operativo
  • A carteira abre no mesmo telemóvel

ARF 4.4.3.1

Entre dispositivos

Código QR

  • O computador mostra um código QR para digitalizar
  • Vulnerável a phishing e a retransmissão

ARF 4.4.3.1

API do navegador

Digital Credentials API

  • O navegador transmite a origem verificada
  • Ativada por predefinição no Chrome 141

OpenID4VP Apêndice A

Três formas de uma carteira receber um pedido OpenID4VP.[3][1][10]

O ARF afirma que os esquemas de URI personalizados "não são recomendados para fluxos entre dispositivos" e indica a Digital Credentials API como alternativa.[3] Através da API, a carteira fica a conhecer a origem do verificador tal como autenticada pelo navegador, "o que é importante para a resistência ao phishing".[1] A especificação do W3C ainda é um projeto.[9] O que o utilizador vê num telemóvel:

Navegador: example.com

Verifique a sua identidade

Este sítio web pede à sua carteira os seus dados.

1O navegador envia um URI openid4vp:// ao sistema operativo.[3]

EUDI Wallet

A verificar o pedido

A carteira abre e liga-se à parte utilizadora.

2A carteira autentica a parte utilizadora e verifica o que esta registou.[3]

EUDI Wallet

Escolha o que partilhar

  • ApelidoPartilhado
  • Data de nascimentoPartilhado
  • MoradaNão partilhado

Partilhar

3O utilizador aprova os atributos.[3]

Navegador: example.com

Dados recebidos

4A carteira submete a resposta e devolve o utilizador.[1]

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 utilizador revelou e um Key Binding JWT. O verificador "TEM DE validar cada Verifiable Presentation individual" e rejeitar qualquer uma com o nonce errado.[1]

1Verificar a assinatura do emissor

A chave encadeia até um fornecedor de PID ou de atestados de confiança.

2Verificar cada divulgação

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

3Verificar o Key Binding JWT

Assinatura com a chave do titular; o nonce e o destinatário coincidem.

4Verificar a revogação

Ler a lista de estado do emissor.

Todas as verificações são aprovadas

Sim

Usar os atributos divulgados

Não

Rejeitar e oferecer outra via

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

Assinatura do emissor. O ARF coloca-a em primeiro lugar entre as verificações da parte utilizadora. As âncoras de confiança provêm das Listas de Confiança (ETSI TS 119 612) e das Listas de Entidades de Confiança (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 atributo e um valor, como ["eluV5Og3gSNII8EYnsxA_A", "family_name", "Doe"].[1] Calcule o hash de cada uma e encontre o respetivo digest. Sem correspondência, o emissor não a assinou.

Key Binding JWT. Quando a vinculação ao titular é exigida, a carteira "TEM DE devolver um SD-JWT com um Key Binding JWT". O seu nonce tem de ser igual ao nonce do seu pedido e o seu aud tem de ser igual ao seu Client Identifier ou, através da 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 que o fornecedor "não revogou o PID ou o atestado".[3] A EVO Wallet da Moldávia, por exemplo, documenta uma IETF Token Status List para este fim.[11]

Nota

O retrato do PID só passa a ser obrigatório a partir de 11 de agosto de 2028, pelo que não deve planear uma correspondência facial com o retrato da carteira antes dessa data.[5]

Apresentações mdoc através da ISO/IEC 18013-7, em resumo

Para um mdoc, o VP Token contém uma DeviceResponse da ISO/IEC 18013-5, codificada 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 ao seu pedido, tal como o nonce e o destinatário vinculam um SD-JWT VC.

Atenção

O direito da UE aplica o «Anexo C da ISO/IEC 18013-7:2025» ao mdoc através da Digital Credentials API.[5] A ISO indica a edição de 2024 da 18013-7 como retirada e substituída, pelo que deve verificar que edição a sua biblioteca implementa.[8]

A nossa comparação SD-JWT VC vs mdoc explica quando cada formato é adequado.

O que o perfil HAIP acrescenta para os 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 a sua utilização «é necessária para garantir a interoperabilidade».[3] Para a apresentação, o CIR 2026/1731 estabelece um «perfil OpenID4VC-HAIP» e um «perfil ISO/IEC-mdoc».[5]

RequisitoPara o seu verificadorFonte
Certificado de acessoAssinar com um certificado de acesso de parte utilizadora x509_hash, ETSI TS 119 475CIR 2026/1731[5]
Certificado de registoIncluí-lo em verifier_infoCIR 2026/1731[5]
RegistoRegistar-se no Estado-Membro onde está estabelecidoeIDAS, Art. 5b(1)[4]
Verificações da carteiraAs unidades de carteira só validam certificados de registo a partir de 11 de agosto de 2028; não é um prazo de registoCIR 2026/1731[5]

O certificado de registo «descreve a utilização prevista da parte utilizadora e indica os atributos» que esta registou, e o regulamento relativo ao registo aplica-se a partir de 24 de dezembro de 2026.[6] A data de 11 de agosto de 2028 abrange apenas a verificação desse certificado do lado da carteira, não o registo.[5] A Alemanha resume assim: uma organização «recebe um certificado de acesso e de registo para a organização e para o caso de utilização».[12] O nosso guia para partes utilizadoras da carteira europeia de identidade digital (EUDI Wallet) aborda o registo em pormenor.

Erros comuns ao construir um verificador OpenID4VP

ErroCorreção
Nonces reutilizados ou curtosPelo menos 16 bytes aleatórios novos por pedido[1]
Sem verificação do destinatárioCompare o aud com o seu Client Identifier ou com a origem[1]
Pedir dados não registadosConstrua a consulta DCQL a partir do seu registo[4]
Códigos QR com URI personalizado entre dispositivosPrefira a Digital Credentials API[3]
Confiar em trusted_authoritiesValide o emissor face às listas de confiança por si próprio[1]
Ignorar a revogaçãoVerifique o estado em todas as verificações[3]
Assinar com o prefixo redirect_uriNão pode ser assinado; use x509_hash[1][5]

A carteira também é voluntária: o acesso «não pode, de modo algum, ser restringido nem tornado desvantajoso» para as pessoas que não a utilizam, pelo que o seu verificador funciona ao lado de 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, que é documentação e não testes.[3]
  • Estude o verificador de demonstração do Banco Nacional da Moldávia e o respetivo código-fonte.[13]
  • Consulte o projeto da Digital Credentials API antes de depender da via do navegador.[9]

Para as datas subjacentes ao seu plano de testes, consulte prazos da carteira europeia de identidade digital (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: está no nosso plano de desenvolvimento, alinhada com o calendário da EUDI Wallet, no mesmo fluxo que já utiliza hoje. Entretanto, já pode verificar pessoas à distância.

Mantém as suas obrigações de parte utilizadora. A documentação das carteiras mostra como as eID são ativadas por país.

A Didit fornece

  • Autenticações com eID nacionais e a via documental num único fluxo
  • A prova de cada verificação

Fica consigo

  • O seu registo como parte utilizadora da carteira
  • A decisão de aceitação de clientes e as suas políticas

Planeie connosco o seu percurso para a carteira europeia de identidade digital (EUDI Wallet)

Indique-nos os seus países e o seu caso de utilização e comece hoje com eIDs nacionais e documentos.

Fale connoscoComece grátisLeia a documentação

Pontos-chave

  • O OpenID4VP 1.0 é uma especificação final da OpenID desde 10 de julho de 2025.
  • Envie uma consulta DCQL limitada pelo seu registo, com 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 de parte utilizadora 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 pedir e apresentar credenciais. A carteira devolve apresentações assinadas num VP Token, sem código de autorização nem token de acesso para trocar. A versão 1.0 tornou-se uma OpenID Final Specification em 10 de julho de 2025.[1][2]

A EUDI Wallet usa o OpenID4VP?

Sim, para a apresentação remota, a par 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 indica as credenciais e os atributos que um verificador pretende. A carteira devolve as apresentações correspondentes. Para a EUDI Wallet, peça apenas os atributos que registou.[1][4]

Que modo de resposta deve usar um verificador EUDI?

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

Como verifico o Key Binding JWT?

Verifique a assinatura com a chave vinculada na credencial e, depois, verifique o nonce e o destinatário face ao seu pedido. Através da Digital Credentials API, o destinatário é a sua origem.[1]

Que prefixo de identificador de cliente usam os verificadores EUDI?

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

Posso usar um código QR entre dispositivos?

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

Posso fazer a correspondência facial com o retrato da carteira?

Ainda não de forma fiável. O retrato só passa a ser um dado PID obrigatório 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 consulte 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. Aprovada a especificação final do OpenID for Verifiable Presentations 1.0, 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 relativo ao registo 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 relativo aos 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, projeto do W3C.
  10. Lançamento da Digital Credentials API, Chrome for Developers.
  11. Guia para programadores 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 carteira europeia de identidade digital (EUDI Wallet) com que os programadores mais lidam, e é suficientemente estável para desenvolver com base nele. 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 à distância enquanto as carteiras são implementadas

Utilize já as eID nacionais e a via documental, e fale connosco sobre a carteira europeia de identidade digital (EUDI Wallet).

Comece grátisFale connosco

Infraestrutura para identidade e fraude.

Uma API para KYC, KYB, Monitorização de Transações e Rastreio de Carteiras. Integre em 5 minutos.

Peça a uma IA para resumir esta página