Como integrar uma API de eID: normas, código e boas práticas de segurança
Guia centrado em código para integrar eID nacionais através de uma API de eID: fluxos de redirecionamento, push na 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 processo de registo peça a um sistema nacional de identificação eletrónica (eID) que autentique uma pessoa e devolva atributos de identidade assinados. Todos os sistemas usam um de cinco padrões: um redirecionamento no navegador, uma notificação push na aplicação com um código de verificação, um código QR ou abertura da aplicação, um cartão com chip lido por comunicação de campo próximo (NFC) ou uma apresentação a partir da carteira europeia de identidade digital (EUDI Wallet) através do OpenID for Verifiable Presentations (OpenID4VP).[2][6][8][14]
- Continua a ter de 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 destina-se a engenheiros que estão a integrar eID nacionais no processo de onboarding.
Como funciona uma API de eID: cinco padrões de interação
O seu sistema é a parte utilizadora (RP). Nunca vê a credencial em si, apenas uma resposta assinada sobre a pessoa.
| Padrão | O que o utilizador faz | Como o seu backend recebe a resposta | Exemplo |
|---|---|---|---|
| Redirecionamento (OpenID Connect, OIDC) | Sai da sua página para o início de sessão do sistema, autentica-se e regressa | Um código de autorização, trocado por um ID token assinado | ID Austria, cujo início de sessão OIDC suporta apenas o fluxo de código de autorização[6] |
| Notificação push na aplicação com um código | Introduz um código pessoal, compara o código no ecrã com o da aplicação e introduz o PIN na aplicação | Aguarda ou consulta periodicamente até obter um resultado assinado | Smart-ID, Mobile-ID[10][20] |
| Código QR ou abertura da aplicação | Lê um código QR animado num computador, ou a aplicação abre no mesmo telemóvel | Consulta periodicamente o sistema até o pedido estar concluído | BankID Suécia[8] |
| Cartão e NFC | Aproxima o cartão com chip do telemóvel e introduz o PIN do cartão | Um servidor eID lê o chip e devolve os atributos | Cartão de identidade eletrónico alemão[14] |
| Apresentação a partir da carteira (OpenID4VP) | Aprova, numa aplicação de carteira, os atributos que pretende partilhar | Uma apresentação de atributos assinados e divulgados seletivamente | Carteira europeia de identidade digital (EUDI Wallet)[2] |
Alguns sistemas estão por trás de um gateway público: o TARA da Estónia é um gateway de código de autorização à frente do cartão de identificação, do Smart-ID, do Mobile-ID e das eID da UE.[7] Consulte sistemas de eID por país para saber que padrão cada sistema utiliza.
O que desenvolve e o que um fornecedor assegura
O acesso vem antes do código. Na Dinamarca, todos os prestadores de serviços têm de passar por um intermediário MitID certificado.[12] Na Suécia, compra o BankID a um banco ou a um revendedor e encomenda um certificado de parte utilizadora.[15] Na Alemanha, opera o seu próprio servidor eID, utiliza um serviço eID alojado com o seu próprio certificado ou utiliza um serviço de identificação e não detém qualquer certificado.[13] Para a EUDI Wallet, uma parte utilizadora tem de se registar no Estado-Membro onde está estabelecida.[1]
| Camada | Direto, sistema a sistema | Através de uma única API de eID |
|---|---|---|
| Contratos e certificados | Um por sistema, renovado no ciclo de cada sistema | O fornecedor detém-nos; o cliente detém um único contrato |
| Código de protocolo | OIDC, APIs de polling, um servidor eID, OpenID4VP | Uma API de sessão e um formato de resultado |
| Ecrãs | Seletor, QR, código de comparação, erros, por sistema | Fluxo alojado ou SDK |
| Verificação da assinatura | Sua, por chave e formato de cada sistema | Feita pelo fornecedor, comunicada como veredicto |
| Nível de garantia | Cabe-lhe a si pedir e verificar | Registado no resultado; a política continua a ser definida por si |
| Alternativa para pessoas sem eID | Um segundo fornecedor ou um processo manual | Uma via documental no mesmo fluxo |
| A decisão de integração do cliente | Sua | Continua a ser sua |
Existem intermediários certificados para a maioria dos sistemas nórdicos e bálticos. Opte pela ligação direta para um único sistema com volume elevado; utilize uma única API quando os utilizadores vêm de vários países.
O fluxo de redirecionamento, passo a passo
Este é o fluxo de código de autorização OIDC. O seu backend reencaminha o navegador com um state e um nonce aleatórios. Depois, troca o código devolvido por um token de ID e verifica-o.
O utilizador autentica-se com o eID
Verificar state, nonce, assinatura, acr
Um início de sessão por redirecionamento. Intermediários e gateways acrescentam saltos no passo 2, não passos novos para si.
A verificação após o passo 5 é a mais importante. Segundo a documentação do ID-porten da Digdir, o cliente "TEM de validar que o nível de segurança (acr) é suficientemente elevado".[5] Leia o acr como o nível de garantia (LoA) que o esquema declara e recuse tudo o que estiver abaixo da sua política.
O fluxo de notificação na app com código de comparação
O Smart-ID e o Mobile-ID nunca saem da sua página. O utilizador introduz um código de identificação pessoal (o Mobile-ID pede também o número de telefone). A sua página mostra um código curto e o mesmo código aparece na app. O utilizador aprova com o PIN no telemóvel apenas quando os códigos coincidem.[20] O Smart-ID pode também mostrar três códigos e pedir ao utilizador que escolha o correto.[10]
Escolha como verificar
Inicie sessão com a identificação eletrónica que já utiliza.
Smart-ID
Utilizar antes um documento de identificação
1O utilizador escolhe um eID entre os que aceita.
Verifique o código
4821
O mesmo código aparece na sua app Smart-ID.
2A sua página de verificação, no dispositivo em utilização, mostra um código de comparação. O mesmo código aparece na app.
Introduza o seu PIN
Apenas se o código corresponder ao que está no ecrã.
3O utilizador introduz o PIN na app, nunca na sua página.
Está verificado
- Nome completoPartilhado
- Data de nascimentoPartilhada
- Código pessoalPartilhado
- MoradaNão partilhada
4Os atributos assinados chegam ao seu backend.
O BankID Sweden segue o mesmo modelo, com um QR em vez de um código digitado: o utilizador abre a aplicação no mesmo dispositivo com um token de arranque automático, ou lê um QR animado apresentado no outro dispositivo, e o seu backend consulta /collect até a ordem ficar concluída. A ordem concluída contém o número pessoal, o nome, o nome próprio e o apelido, bem como campos de dispositivo e de assinatura e campos de risco opcionais.[8] O Smart-ID+ passa o Smart-ID para este modelo (QR dinâmico no computador, app-to-app no telemóvel), pelo que os utilizadores deixam de digitar um código pessoal num site.[11]
A aplicação mostra o mesmo código; o utilizador introduz o PIN
Um início de sessão com Smart-ID ou Mobile-ID, pela ordem em que o utilizador o vê: código pessoal, código de comparação na sua página, o mesmo código na aplicação e, por fim, o PIN.[20] Na variante QR do BankID, o passo 1 desaparece e o passo 2 mostra um código QR.
Cartão e NFC, e a carteira europeia de identidade digital (EUDI Wallet) através de OpenID4VP
Com o cartão eID alemão, o utilizador aproxima o cartão de um telemóvel com NFC na AusweisApp. Antes de o PIN ser introduzido, a lei exige que a aplicação mostre o nome e a morada do prestador e as categorias de dados pedidas, e só 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) enumera como formas de apresentação remota o OpenID4VP através de redirecionamentos e de esquemas de URI personalizados, como openid4vp://, o OpenID4VP através da W3C Digital Credentials API, ou a ISO/IEC 18013-7 através dessa API.[2][17] Antes de partilhar o que quer que seja, a carteira autentica o seu certificado de acesso, verifica que não pede mais atributos do que os que registou e permite ao utilizador aprovar cada um deles.[2] O retrato só passa a ser obrigatório nos dados de identificação pessoal (PID) a partir de 11 de agosto de 2028, exceto quando o utilizador opte expressamente por não o incluir.[18]
- 23 de julho de 2026ARF v3.0.0Versão atual do quadro da carteira.
- 24 de dezembro de 2026Prazo das carteirasCada Estado-Membro disponibiliza pelo menos uma carteira.
- 24 de dezembro de 2027AceitaçãoAs partes utilizadoras privadas obrigadas por lei ou por contrato a utilizar autenticação forte do utilizador aceitam-na a pedido do utilizador. As micro e pequenas empresas estão isentas.
- 11 de agosto de 2028RetratoO retrato do PID passa a ser obrigatório, salvo se o utilizador optar por não o incluir.
Datas da EUDI Wallet que moldam o roteiro de uma API de eID.[1][2][18]
O guia da EUDI Wallet aborda o registo das partes utilizadoras e o grau de preparação por país.
Erros, alternativas e novas tentativas
Um início de sessão termina como concluído, cancelado, expirado ou falhado. Trate os três últimos da mesma forma e decida, por país, o que acontece a seguir.
1Disponibilize os eID do país do utilizador
Lista de aceitação por país; o utilizador escolhe.
O início de sessão foi concluído com uma assinatura válida e o nível exigido
Guardar os atributos assinados
Nome, data de nascimento, identificador, nível.
Recorrer à alternativa ou recusar
Documento com leitura do chip, ou terminar a sessão.
2Fazer a triagem e decidir
Aplique as suas próprias regras de risco aos dados verificados.
Nunca repita automaticamente um início de sessão cancelado. Torne o callback idempotente, para que uma atualização da página ou um evento duplicado não possa abrir duas contas. Mantenha uma via para pessoas sem eID, normalmente um documento de identificação com leitura do chip por NFC, deteção de vivacidade e correspondência facial. O artigo verificação de eID por NFC e segurança do chip trata dessa via.
Lista de verificação de segurança para uma integração de API de eID
- Gere um
statee umnoncenovos em cada início de sessão e rejeite um callback que não lhes corresponda. - Verifique a assinatura de cada token ou resultado antes de ler qualquer atributo.
- Verifique o nível de garantia no resultado, e não apenas no pedido.[5]
- Exija nível substancial ou elevado quando a via de eID do AMLR se aplicar a si.[3]
- Nunca recolha o PIN do eID na sua página. Esse PIN pertence à aplicação do esquema.[20]
- Prefira o código QR ou a abertura de aplicação para aplicação em vez de códigos digitados nos inícios de sessão entre dispositivos.[11]
- Peça apenas os atributos que registou e de que precisa.[1]
- Verifique as assinaturas e os carimbos temporais dos webhooks antes de confiar num resultado.
A base jurídica é o Regulamento Antibranqueamento de Capitais (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 respeita aos níveis de garantia "substancial" ou "elevado"».[3] Nem todos os esquemas estão notificados: o MitID consta da lista da UE de esquemas notificados, o Smart-ID não.[4]
Atenção
A ARF alerta para o facto de os fluxos entre dispositivos com URI personalizados «serem vulneráveis a ataques de phishing e de retransmissão» e não recomenda esquemas de URI personalizados para a apresentação entre dispositivos.[2] Segundo a Computer Sweden, a polícia registou em julho de 2019 uma descida de 90% nas burlas telefónicas com BankID após a introdução dos códigos QR.[9]
Como a Didit ajuda na integração de API de eID
A Didit reúne cinco eIDs disponíveis numa única API de sessões (MitID, BankID Sweden, Finnish Trust Network, Smart-ID e Mobile-ID, em sete países), com uma via por documento no mesmo fluxo de trabalho. Há mais esquemas no roteiro da Didit, e a aceitação da carteira europeia de identidade digital (EUDI Wallet) chega brevemente. A Didit nunca pede o PIN. Mais informação na página de carteiras de identidade digital e na documentação das carteiras.[19]
Ativar eIDs disponíveis por país
Na consola: Workflows, o passo ID Verification, Countries, «Wallets accepted». Através da API, a funcionalidade 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 fragmento 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 no telemóvel:[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 uma ordem de prioridade. on_failure assume o valor fallback_to_document ou decline. Uma carteira que não esteja disponível no seu ambiente faz rejeitar toda a gravação, por isso consulte primeiro o catálogo.[21]
Captura de ecrã pendente: console-wallets-accepted
Escolha dos eID aceites para um país na consola da Didit.
Criar uma sessão e ler o resultado
POST /v3/session/ com o seu workflow_id (e, opcionalmente, vendor_data e um callback) devolve session_id, url e session_token. Abra o URL ou utilize 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 indica |
|---|---|---|
provider | mitid | O eID que o utilizador escolheu |
issuing_authority | Danish Agency for Digital Government | Quem garante a 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 asserção assinada foi validada |
attributes | full_name, date_of_birth, cpr_alias | Atributos validados, os nomes variam consoante o eID |
portrait, face_match_score | null | Nenhum eID disponível partilha um retrato |
Um nível inferior ao pedido faz falhar o início de sessão. Só são faturados os inícios de sessão concluídos.[19] Preços: MitID, Finnish Trust Network $0.25; BankID Sweden, Smart-ID, Mobile-ID $0.20.
Webhooks e sandbox
Verifique X-Signature-V2 com o segredo do seu destino, rejeite um X-Timestamp com mais de 300 segundos e baseie a idempotência em event_id. Uma entrega falhada é repetida até duas vezes.[22] Uma aplicação sandbox pode ativar todas as carteiras, aprova sem uma autenticação real e disponibiliza wallet_cancelled, wallet_timeout e wallet_provider_error para testar a sua alternativa.[23]
| eID | Países | Nível Didit | Estado Didit |
|---|---|---|---|
| MitID | Dinamarca | Substancial | Disponível |
| BankID Sweden | Suécia | Substancial | Disponível |
| Finnish Trust Network | Finlândia | Substancial | Disponível |
| Smart-ID | Estónia, Letónia, Lituânia, Bélgica | Elevado | Disponível |
| Mobile-ID | Estónia, Lituânia | Elevado | Disponível |
| BankID Norway | Noruega | Não definido | Brevemente |
| Freja eID | Suécia | Não definido | Brevemente |
| itsme | Bélgica | Não definido | Brevemente |
| iDIN | Países Baixos | Não definido | Brevemente |
| Cartão de identidade eletrónico alemão | Alemanha | Não definido | Brevemente |
| FranceConnect | França | Não definido | Brevemente |
| ID Austria | Áustria | Não definido | Mediante pedido |
| Cl@ve | Espanha | Não definido | Mediante pedido |
| SPID | Itália | Não definido | Mediante pedido |
| Swiss E-ID | Suíça | Não definido | Mediante pedido |
| Carteira europeia de identidade digital (EUDI Wallet) | UE e EEE | Não definido | Brevemente |
A Didit fornece
- Acesso aos sistemas, certificados e verificação da assinatura
- Uma API de sessão, fluxo alojado e SDKs
- A via documental com leitura do chip NFC para utilizadores sem eID
Fica a seu cargo
- Que eID aceitar em cada país
- O nível de garantia exigido pela sua política
- A decisão de onboarding e a responsabilidade
Uma API de eID para todos os países onde opera
Ative as eID disponíveis em cada país, mantenha os documentos como alternativa e pague apenas pelos inícios de sessão concluídos.
Pontos-chave
- Todas as eID usam um de cinco padrões: redirecionamento, notificação push na app com um código, QR ou abertura da app, cartão e NFC, ou OpenID4VP.
- O acesso vem primeiro: intermediários, contratos, certificados ou registo.
- Verifique a assinatura e o nível de garantia em cada resultado.
- As partes utilizadoras privadas obrigadas por lei ou por contrato a utilizar autenticação forte do utilizador têm de aceitar a EUDI Wallet a pedido do utilizador até 24 de dezembro de 2027 (as micro e pequenas empresas estão isentas).
Perguntas frequentes
O que é uma API de eID?
É uma interface que permite à sua aplicação pedir a um sistema nacional de identificação eletrónica, ou a um fornecedor que se liga a vários, que autentique uma pessoa e devolva atributos de identidade assinados. Continua a ter de verificar a assinatura e o nível de garantia da resposta.
Preciso de uma integração separada para cada sistema de eID?
Numa ligação direta, sim: cada sistema tem o seu próprio contrato, certificado e protocolo. Na Dinamarca, tem de usar um intermediário MitID certificado, e o BankID Sweden é adquirido a um banco ou a um revendedor.[12][15] Uma única API de eID esconde essas diferenças por detrás de uma sessão e de um formato de resultado.
Que protocolo usam as eID nacionais?
Muitos utilizam OpenID Connect, frequentemente através de um gateway como o ID-porten ou o TARA.[5][7] Outros utilizam as 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) utiliza OpenID4VP ou ISO/IEC 18013-7.[2]
Que dados devolve um início de sessão com eID?
Depende do esquema. O BankID Sweden devolve o número pessoal, o nome, o nome próprio e o apelido.[8] O cartão eID alemão envia apenas as categorias de dados indicadas no certificado do prestador (§ 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 garanto o cumprimento do nível de garantia?
Solicite o nível de que necessita e verifique o nível declarado no resultado, como a claim acr no OIDC. O ID-porten indica que os clientes têm de validar que o nível de segurança é suficientemente elevado.[5] Trate qualquer nível abaixo da sua política como insuficiente e não abra a conta.
O que deve acontecer quando um utilizador não tem eID ou cancela?
Decida, por país, entre uma via alternativa e uma recusa. Não repita automaticamente um início de sessão cancelado.
Como testo uma integração de eID sem utilizadores reais?
Simule aprovações, cancelamentos e tempos esgotados na sandbox do prestador. Uma aprovação simulada não prova que uma identidade real consegue iniciar sessão: realize um teste autorizado num dispositivo real antes da implementação.[20]
Quando têm as empresas de aceitar a EUDI Wallet?
As partes utilizadoras privadas obrigadas por lei ou por contrato a utilizar autenticação forte do utilizador têm de aceitá-la a pedido do utilizador até 24 de dezembro de 2027. As micro 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, secções 4.4.3, 5.7.1 e 6.6.3.
- Regulamento (UE) 2024/1624 (AMLR), EUR-Lex, Artigo 22(6).
- Overview of pre-notified and notified eID schemes under eIDAS, Comissão Europeia, consultado em 5 de outubro de 2026.
- ID-porten ID token, Agência Norueguesa de Digitalização (Digdir).
- Anbindung mit OpenID Connect, documentação para programadores do ID Austria.
- TARA technical specification, Autoridade dos Sistemas de Informação da Estónia (RIA).
- Auth and sign: collect, documentação para programadores do BankID.
- QR-koden gjorde susen: BankID-bedrägerierna ned med 90 procent, Computer Sweden, 3 de julho de 2019 (fonte secundária).
- Why do I sometimes see one confirmation code and sometimes three, Smart-ID.
- How does the new Smart-ID protect me from fraud, Smart-ID.
- MitID brokers, Agência Dinamarquesa para o Governo Digital.
- Become a service provider, AusweisApp, Governo federal alemão.
- Secção 18 da Lei dos Passaportes e Bilhetes de Identidade (PAuswG), Gesetze im Internet.
- Connect your business to BankID, BankID.
- OpenID for Verifiable Presentations 1.0 final specification approved, OpenID Foundation.
- Digital Credentials, W3C.
- Regulamento de Execução (UE) 2026/1731 da Comissão, EUR-Lex, retrato nos PID a partir de 11 de agosto de 2028.
- Carteiras de identidade digital, documentação da Didit.
- Integração de Smart-ID e Mobile-ID, documentação da Didit.
- Configurações de funcionalidades 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.
Consulte cada eID nacional, o seu nível e o seu estado na página de verificação de eID.
Lance o início de sessão com eID sem um contrato por sistema
Comece pelas eID disponíveis, acrescente sistemas à medida que os seus utilizadores precisarem deles e mantenha os documentos para todos os outros.
Artigos relacionados
- e-Devlet para empresas: como funciona a verificação de identidade na Turquia
- Integração do Singpass Myinfo: guia para empresas em Singapura
- Integração do Cl@ve em Espanha: quem se pode ligar e que alternativas usar
- Verificação PhilSys: como as empresas verificam o National ID
- Verificador OpenID4VP: aceitação da carteira de identidade digital europeia (EUDI Wallet)
- Regulamento eIDAS explicado: o que muda com o eIDAS 2 (2024/1183)