Guia de integração de API de eID: padrões, código e segurança
Guia com foco em código para integrar eIDs nacionais via API de eID: fluxos de redirecionamento, push no app, QR, cartão NFC e OpenID4VP, o que construir, campos de resultado, alternativas e checklist de segurança.

Em resumo
Uma API de eID permite que o seu cadastro peça a um sistema nacional de identificação eletrônica (eID) que autentique uma pessoa e devolva atributos de identidade assinados. Todo sistema usa um de cinco padrões: um redirecionamento no navegador, uma notificação push no aplicativo com um código de comparação, um QR code ou a abertura de um aplicativo, a leitura de um cartão com chip por comunicação por campo de proximidade (NFC) ou uma apresentação pela carteira europeia de identidade digital (EUDI Wallet) via OpenID for Verifiable Presentations (OpenID4VP).[2][6][8][14]
- Você ainda precisa verificar a assinatura e o nível de garantia.
- A maioria dos sistemas exige um contrato, um certificado ou um intermediário certificado antes da primeira chamada.[12][13][15]
Este guia, centrado em código, é para engenheiros que estão adicionando eIDs nacionais ao onboarding.
Como funciona uma API de eID: cinco padrões de interação
O seu sistema é a parte confiante (RP). Ele nunca vê a credencial em si, apenas uma resposta assinada sobre a pessoa.
| Padrão | O que o usuário faz | Como o seu backend recebe a resposta | Exemplo |
|---|---|---|---|
| Redirecionamento (OpenID Connect, OIDC) | Sai da sua página para o login do sistema, faz login e volta | Um código de autorização, trocado por um ID token assinado | ID Austria, cujo login OIDC aceita apenas o fluxo de código de autorização[6] |
| Push no aplicativo com um código | Digita um código pessoal, compara o código na tela com o do aplicativo e digita o PIN no aplicativo | Você aguarda ou consulta periodicamente até receber um resultado assinado | Smart-ID, Mobile-ID[10][20] |
| QR code ou abertura do aplicativo | Escaneia um QR code animado em um computador, ou o aplicativo abre no mesmo celular | Você consulta o sistema periodicamente até o pedido ser concluído | BankID da Suécia[8] |
| Cartão e NFC | Aproxima o cartão com chip do celular e digita o PIN do cartão | Um servidor de eID lê o chip e devolve os atributos | Documento de identidade alemão com eID[14] |
| Apresentação pela carteira (OpenID4VP) | Aprova em um aplicativo de carteira quais atributos compartilhar | Uma apresentação de atributos assinados, com divulgação seletiva | Carteira europeia de identidade digital (EUDI Wallet)[2] |
Alguns esquemas ficam atrás de um gateway público: o TARA da Estônia é um gateway de código de autorização à frente do cartão de identidade, do Smart-ID, do Mobile-ID e das eIDs da UE.[7] Veja esquemas de eID por país para saber qual padrão cada esquema usa.
O que você constrói e o que um provedor resolve
O acesso vem antes do código. Na Dinamarca, todo prestador de serviços precisa passar por um broker de MitID certificado.[12] Na Suécia, você adquire o BankID de um banco ou de um revendedor e solicita um certificado de parte confiante.[15] Na Alemanha, você opera seu próprio servidor de eID, usa um serviço de eID hospedado com seu próprio certificado ou usa um serviço de identificação sem ter nenhum certificado próprio.[13] Para a EUDI Wallet, uma parte confiante precisa se registrar no Estado-Membro onde está estabelecida.[1]
| Camada | Direto, esquema por esquema | Por meio de uma única API de eID |
|---|---|---|
| Contratos e certificados | Um por esquema, renovado no ciclo de cada esquema | O provedor os mantém; você mantém um contrato |
| Código de protocolo | OIDC, APIs de polling, um servidor de eID, OpenID4VP | Uma API de sessão e um formato de resultado |
| Telas | Seletor, QR, código de comparação, erros, por esquema | Fluxo hospedado ou SDK |
| Verificação de assinatura | Por sua conta, por chave e formato de cada esquema | Feita pelo provedor, informada como um veredito |
| Nível de garantia | Cabe a você solicitar e verificar | Registrado no resultado; a política continua sendo definida por você |
| Alternativa para pessoas sem eID | Um segundo fornecedor ou um caminho manual | Uma rota por documento no mesmo fluxo |
| A decisão de onboarding | Sua | Continua sendo sua |
Existem brokers certificados para a maioria dos esquemas nórdicos e bálticos. Vá direto para um único esquema com alto volume; use uma API quando os usuários vierem de vários países.
O fluxo de redirecionamento, passo a passo
Este é o fluxo de código de autorização do OIDC. Seu backend redireciona o navegador com um state e um nonce aleatórios, depois troca o código retornado por um token de ID e o verifica.
O usuário faz login com o eID
Verifica state, nonce, assinatura e acr
Um login por redirecionamento. Brokers e gateways acrescentam saltos na etapa 2, não novas etapas para você.
A verificação após a etapa 5 é a mais importante. Segundo a documentação do ID-porten da Digdir, o cliente "DEVE validar que o nível de segurança (acr) é suficientemente alto".[5] Interprete o acr como o nível de garantia (LoA) que o esquema declara e recuse qualquer valor abaixo da sua política.
O fluxo por notificação no app com código de comparação
Com Smart-ID e Mobile-ID, o usuário nunca sai da sua página. O usuário digita um código de identificação pessoal (o Mobile-ID também pede o número de telefone), sua página mostra um código curto e o mesmo código aparece no app. O usuário aprova com o PIN no celular somente quando os códigos coincidem.[20] O Smart-ID também pode mostrar três códigos e pedir que o usuário escolha o correto.[10]
Escolha como verificar
Faça login com a identidade eletrônica que você já usa.
Smart-ID
Usar um documento de identidade
1O usuário escolhe um eID entre os que você aceita.
Confira o código
4821
O mesmo código aparece no seu app Smart-ID.
2Sua página de verificação, no dispositivo em uso, mostra um código de comparação. O mesmo código aparece no app.
Digite seu PIN
Somente se o código for igual ao da tela.
3O usuário digita o PIN no app, nunca na sua página.
Você está verificado
- Nome completoCompartilhado
- Data de nascimentoCompartilhado
- Código pessoalCompartilhado
- EndereçoNão compartilhado
4Os atributos assinados chegam ao seu backend.
O BankID Sweden segue o mesmo formato, com um QR no lugar de um código digitado. O usuário abre o app no mesmo dispositivo com um token de autostart ou escaneia um QR animado exibido no outro dispositivo. Seu backend consulta /collect até o pedido ser concluído. O pedido concluído traz o número pessoal, o nome, o prenome e o sobrenome, além de campos de dispositivo, de assinatura e campos opcionais de risco.[8] O Smart-ID+ leva o Smart-ID para esse modelo (QR dinâmico no desktop, app-to-app no celular), e assim os usuários deixam de digitar um código pessoal em um site.[11]
O app exibe o mesmo código, e o usuário digita o PIN
Um login com Smart-ID ou Mobile-ID, na ordem em que o usuário o vê: código pessoal, código de comparação na sua página, o mesmo código no app e, por fim, o PIN.[20] Na variante com QR do BankID, a etapa 1 desaparece e a etapa 2 exibe um QR code.
Cartão e NFC, e a carteira europeia de identidade digital (EUDI Wallet) via OpenID4VP
Com a carteira de identidade eletrônica alemã, o usuário aproxima o cartão de um celular com NFC no AusweisApp. Antes de o PIN ser digitado, a lei exige que o app mostre o nome e o endereço do provedor e as categorias de dados solicitadas. Somente essas categorias são enviadas.[14]
Segundo a OpenID Foundation, o OpenID4VP 1.0 é uma especificação final.[16] O Architecture and Reference Framework (ARF) lista como formas de apresentação remota o OpenID4VP via redirecionamentos e esquemas de URI personalizados, como openid4vp://, o OpenID4VP via W3C Digital Credentials API ou a ISO/IEC 18013-7 via essa mesma API.[2][17] Antes de compartilhar qualquer dado, a carteira autentica o seu certificado de acesso, verifica se você não pede mais atributos do que registrou e permite que o usuário aprove cada um deles.[2] A foto só passa a ser obrigatória nos dados de identificação pessoal (PID) a partir de 11 de agosto de 2028, exceto quando o usuário recusa expressamente.[18]
- 23 de julho de 2026ARF v3.0.0Versão atual do framework da carteira.
- 24 de dezembro de 2026Prazo das carteirasCada Estado-Membro oferece pelo menos uma carteira.
- 24 de dezembro de 2027AceitaçãoPartes confiantes privadas obrigadas por lei ou contrato a usar autenticação forte do usuário passam a aceitá-la a pedido do usuário. Microempresas e pequenas empresas estão isentas.
- 11 de agosto de 2028FotoA foto nos PID passa a ser obrigatória, salvo se o usuário recusar.
Datas da EUDI Wallet que definem o roadmap de uma API de eID.[1][2][18]
O guia da EUDI Wallet trata do registro de partes confiantes e da prontidão por país.
Erros, alternativas e novas tentativas
Um login termina como concluído, cancelado, expirado ou com falha. Trate os três últimos casos da mesma forma e decida, por país, o que acontece em seguida.
1Ofereça os eIDs do país do usuário
Lista de eIDs aceitos por país, e o usuário escolhe.
O login foi concluído com assinatura válida e no nível exigido
Armazenar os atributos assinados
Nome, data de nascimento, identificador, nível.
Recorrer ao fallback ou recusar
Documento com leitura de chip, ou encerrar a sessão.
2Triagem e decisão
Aplique suas próprias regras de risco aos dados verificados.
Nunca repita automaticamente um login cancelado. Torne o callback idempotente, para que uma atualização da página ou um evento duplicado não abra duas contas. Mantenha uma rota para pessoas sem eID, geralmente um documento de identidade com leitura do chip por NFC, prova de vida (liveness) e correspondência facial. Verificação de eID por NFC e segurança do chip trata dessa rota.
Checklist de segurança para uma integração de API de eID
- Gere um
statee umnoncenovos a cada login e rejeite um callback que não corresponda a eles. - Verifique a assinatura de cada token ou resultado antes de ler qualquer atributo.
- Confira o nível de garantia no resultado, não apenas na requisição.[5]
- Exija nível substancial ou elevado quando a rota de eID do AMLR se aplicar a você.[3]
- Nunca colete o PIN do eID na sua página; ele pertence ao app do esquema.[20]
- Prefira QR code ou abertura app-to-app a códigos digitados em logins entre dispositivos.[11]
- Solicite apenas os atributos que você registrou e de que precisa.[1]
- Verifique as assinaturas e os carimbos de data/hora dos webhooks antes de confiar em um resultado.
A base legal é o Regulamento Antilavagem de Dinheiro (AMLR), aplicável a partir de 10 de julho de 2027: o Artigo 22(6)(b) admite "meios de identificação eletrônica que cumpram os requisitos do Regulamento (UE) n.º 910/2014 no que diz respeito aos níveis de garantia 'substancial' ou 'elevado'".[3] Nem todo esquema é notificado: o MitID consta da lista da UE de esquemas notificados, o Smart-ID não.[4]
Atenção
A ARF alerta que fluxos entre dispositivos com URI personalizado "são vulneráveis a ataques de phishing e de retransmissão" e não recomenda esquemas de URI personalizados para apresentação entre dispositivos.[2] Segundo a Computer Sweden, a polícia informou em julho de 2019 uma queda de 90% nos golpes telefônicos com BankID após a introdução dos QR codes.[9]
Como a Didit ajuda na integração de API de eID
A Didit reúne cinco eIDs em produção em uma única API de sessão (MitID, BankID Sweden, Finnish Trust Network, Smart-ID e Mobile-ID, em sete países), com uma rota por documento no mesmo fluxo. Outros esquemas estão no roadmap da Didit, e a aceitação da carteira europeia de identidade digital (EUDI Wallet) chega em breve. A Didit nunca pede o PIN. Saiba mais na página de carteiras de identidade digital e na documentação de carteiras.[19]
Ative por país os eIDs em produção
No console: Workflows, a etapa ID Verification, Countries, "Wallets accepted". Pela API, o recurso ID Verification (OCR) recebe um objeto methods indexado pelo código de país ISO 3166-1 alpha-3, enviado com POST /v3/workflows/. O trecho documentado para a Dinamarca:[21]
{ "feature": "OCR", "config": { "methods": { "DNK": { "document": { "enabled": true }, "wallet": { "enabled": true, "providers": ["mitid"], "on_failure": "fallback_to_document" } } } } }
E para a Estônia, aceitando os dois eIDs baseados em celular:[20]
{ "EST": { "document": { "enabled": true }, "wallet": { "enabled": true, "providers": ["smart_id", "mobile_id"], "on_failure": "fallback_to_document" } } }
providers é uma lista de aceitação, não um ranking. on_failure é fallback_to_document ou decline. Uma carteira que não está disponível no seu ambiente faz com que todo o salvamento seja rejeitado, então consulte o catálogo antes.[21]
Captura de tela pendente: console-wallets-accepted
Escolha das eIDs aceitas para um país no console da Didit.
Crie uma sessão e leia o resultado
POST /v3/session/ com o seu workflow_id (e, opcionalmente, vendor_data e um callback) retorna session_id, url e session_token. Abra a URL ou use o SDK.[24] O resultado chega por webhook ou por GET /v3/session/{id}/decision/, com verification_method: "wallet", assurance: "cryptographic" e um objeto wallet_verification.[19]
| Campo | Exemplo | O que ele informa |
|---|---|---|
provider | mitid | Qual eID o usuário escolheu |
issuing_authority | Danish Agency for Digital Government | Quem está por trás da identidade |
issuing_country | DNK | A via de identificação, não a nacionalidade |
level_of_assurance | substantial | O nível de garantia declarado pelo esquema |
signature_valid | true | A declaração assinada foi validada |
attributes | full_name, date_of_birth, cpr_alias | Dados validados, os nomes variam conforme a eID |
portrait, face_match_score | null | Nenhuma eID em operação compartilha retrato |
Um nível inferior ao solicitado faz o login falhar. Só são cobrados os logins concluídos.[19] Preços: MitID, Finnish Trust Network $0.25; BankID Sweden, Smart-ID, Mobile-ID $0.20.
Webhooks e sandbox
Verifique o X-Signature-V2 com o segredo do seu destino, rejeite um X-Timestamp com mais de 300 segundos e use o event_id como chave de idempotência. Uma entrega com falha é reenviada até duas vezes.[22] Uma aplicação de sandbox pode ativar todas as carteiras, aprova sem um login real e oferece wallet_cancelled, wallet_timeout e wallet_provider_error para testar o seu fallback.[23]
| eID | Países | Nível na Didit | Status na Didit |
|---|---|---|---|
| MitID | Dinamarca | Substancial | Ativo |
| BankID Sweden | Suécia | Substancial | Ativo |
| Finnish Trust Network | Finlândia | Substancial | Ativo |
| Smart-ID | Estônia, Letônia, Lituânia, Bélgica | Elevado | Ativo |
| Mobile-ID | Estônia, Lituânia | Elevado | Ativo |
| BankID Norway | Noruega | Não definido | Em breve |
| Freja eID | Suécia | Não definido | Em breve |
| itsme | Bélgica | Não definido | Em breve |
| iDIN | Países Baixos | Não definido | Em breve |
| Carteira de identidade eletrônica alemã | Alemanha | Não definido | Em breve |
| FranceConnect | França | Não definido | Em breve |
| ID Austria | Áustria | Não definido | Sob solicitação |
| Cl@ve | Espanha | Não definido | Sob solicitação |
| SPID | Itália | Não definido | Sob solicitação |
| Swiss E-ID | Suíça | Não definido | Sob solicitação |
| Carteira europeia de identidade digital (EUDI Wallet) | UE e EEE | Não definido | Em breve |
A Didit fornece
- Acesso aos esquemas, certificados e verificação da assinatura
- Uma API de sessão, fluxo hospedado e SDKs
- A via documental com leitura do chip por NFC para usuários sem eID
Fica com você
- Quais eIDs aceitar em cada país
- O nível de garantia que a sua política exige
- A decisão de onboarding e a responsabilidade
Uma API de eID para todos os países que você atende
Ative as eIDs já em operação por país, mantenha os documentos como alternativa e pague apenas pelos logins concluídos.
Principais conclusões
- Toda eID usa um de cinco padrões: redirecionamento, notificação push no app com código, QR code ou abertura do app, cartão e NFC, ou OpenID4VP.
- O acesso vem primeiro: intermediários, contratos, certificados ou cadastro.
- Verifique a assinatura e o nível de garantia em todo resultado.
- As partes utilizadoras privadas obrigadas por lei ou por contrato a usar autenticação forte do usuário devem aceitar a carteira europeia de identidade digital (EUDI Wallet) a pedido do usuário até 24 de dezembro de 2027 (microempresas e pequenas empresas estão isentas).
Perguntas frequentes
O que é uma API de eID?
É uma interface que permite à sua aplicação pedir a um esquema nacional de identificação eletrônica, ou a um provedor que se conecta a vários, que autentique uma pessoa e devolva atributos de identidade assinados. Você ainda precisa verificar a assinatura e o nível de garantia da resposta.
Preciso de uma integração separada para cada esquema de eID?
Na integração direta, sim: cada esquema tem o próprio contrato, certificado e protocolo. Na Dinamarca, é obrigatório usar um intermediário MitID certificado, e o BankID da Suécia é contratado junto a um banco ou a um revendedor.[12][15] Uma única API de eID esconde essas diferenças atrás de uma sessão e de um formato de resultado.
Qual protocolo as eIDs nacionais usam?
Muitos usam OpenID Connect, frequentemente por meio de um gateway como ID-porten ou TARA.[5][7] Outros usam suas próprias APIs de polling (BankID Sweden, Smart-ID) ou um servidor eID que lê um cartão com chip (Alemanha).[8][13] A carteira europeia de identidade digital (EUDI Wallet) usa OpenID4VP ou ISO/IEC 18013-7.[2]
Quais dados um login com eID retorna?
Depende do esquema. O BankID Sweden retorna o número pessoal, o nome completo, o nome e o sobrenome.[8] A carteira de identidade eletrônica alemã envia apenas as categorias de dados indicadas no certificado do provedor (§ 18(5)), e não o número de identificação nacional do cartão, que a lista do § 18(3) não inclui.[14]
Como faço para exigir o nível de garantia?
Solicite o nível de que você precisa e verifique o nível declarado no resultado, como o claim acr no OIDC. O ID-porten afirma que os clientes devem validar se o nível de segurança é alto o suficiente.[5] Trate qualquer nível abaixo da sua política como insuficiente e não abra a conta.
O que deve acontecer quando o usuário não tem eID ou cancela?
Decida, por país, entre uma alternativa e uma recusa. Não repita automaticamente um login cancelado.
Como testar uma integração de eID sem usuários reais?
Simule aprovações, cancelamentos e expirações de tempo no sandbox do provedor. Uma aprovação simulada não prova que uma identidade real consegue fazer login: faça um teste autorizado com dispositivo real antes da implantação.[20]
Quando as empresas devem aceitar a EUDI Wallet?
As partes utilizadoras privadas obrigadas por lei ou por contrato a usar autenticação forte do usuário devem aceitá-la, a pedido do usuário, até 24 de dezembro de 2027. Microempresas e pequenas empresas estão isentas.[1]
Fontes
- Regulamento (UE) 2024/1183 (eIDAS 2), EUR-Lex, Jornal Oficial de 30 de abril de 2024, artigos 5a, 5b e 5f.
- Architecture and Reference Framework v3.0.0, projeto EUDI Wallet da Comissão Europeia, publicado em 23 de julho de 2026, seções 4.4.3, 5.7.1 e 6.6.3.
- Regulamento (UE) 2024/1624 (AMLR), EUR-Lex, artigo 22(6).
- Panorama dos esquemas de eID pré-notificados e notificados no âmbito do eIDAS, Comissão Europeia, consultado em 5 de outubro de 2026.
- ID token do ID-porten, Agência Norueguesa de Digitalização (Digdir).
- Anbindung mit OpenID Connect, documentação para desenvolvedores do ID Austria.
- Especificação técnica do TARA, Autoridade do Sistema de Informação da Estônia (RIA).
- Auth and sign: collect, documentação para desenvolvedores do BankID.
- QR-koden gjorde susen: BankID-bedrägerierna ned med 90 procent, Computer Sweden, 3 de julho de 2019 (fonte secundária).
- Por que às vezes vejo um código de confirmação e às vezes três, Smart-ID.
- Como o novo Smart-ID me protege contra fraudes, Smart-ID.
- Brokers do MitID, Agência Dinamarquesa para o Governo Digital.
- Torne-se um provedor de serviços, AusweisApp, governo federal alemão.
- Seção 18 da Lei do Passaporte e da Carteira de Identidade (PAuswG), Gesetze im Internet.
- Conecte sua empresa ao BankID, BankID.
- Especificação final do OpenID for Verifiable Presentations 1.0 aprovada, OpenID Foundation.
- Digital Credentials, W3C.
- Regulamento de Execução (UE) 2026/1731 da Comissão, EUR-Lex, retrato no PID a partir de 11 de agosto de 2028.
- Carteiras de identidade digital, documentação da Didit.
- Integração com Smart-ID e Mobile-ID, documentação da Didit.
- Configurações de recursos do fluxo de trabalho, documentação da Didit.
- Webhooks, documentação da Didit.
- Sandbox e dados de teste, documentação da Didit.
- Início rápido, documentação da Didit.
Veja cada eID nacional, seu nível e seu status na página de verificação por eID.
Lance o login com eID sem um contrato por esquema
Comece com as eIDs já ativas, adicione esquemas conforme seus usuários precisarem e mantenha os documentos para todos os demais.
Artigos relacionados
- Integração com Cl@ve na Espanha: quem pode se conectar e o que usar no lugar
- Verificação PhilSys: como as empresas checam a National ID
- Verificador OpenID4VP: aceitar a carteira europeia de identidade digital (EUDI Wallet)
- Entenda o regulamento eIDAS e as mudanças trazidas pelo eIDAS 2 (2024/1183)
- API do Smart-ID: guia para desenvolvedores da RP API v3
- Identidade digital nacional no mundo: modelos, líderes, padrões