Saltar para o conteúdo principal

Digital Credentials API

A Digital Credentials API é a API de browser do W3C que permite a um website pedir uma credencial a uma wallet no mesmo dispositivo. O pedido é entregue ao sistema operativo, em vez de depender de um código QR ou de um deep link próprio.

Um website chama navigator.credentials.get() com um pedido de credencial digital que indica um protocolo de apresentação e leva como payload o pedido próprio desse protocolo. O browser passa o pedido ao sistema operativo, que mostra um seletor nativo das wallets instaladas no dispositivo, e a wallet escolhida pelo titular devolve a sua resposta de protocolo através da mesma chamada. A API apenas transporta a troca: o que é pedido, o que é divulgado e como a resposta é verificada continuam definidos pelo protocolo que ela contém. Uma chamada complementar, navigator.credentials.create(), faz o mesmo para a emissão, para que um site possa entregar um Credential Offer a uma wallet da mesma forma.

Antes de isto existir, uma apresentação no dispositivo que o titular já estava a usar significava um código QR que o telemóvel onde era apresentado não conseguia ler, ou um deep link que tinha de adivinhar que wallet estava instalada. Encaminhar o pedido através do sistema operativo resolve os dois problemas: o titular tem um único seletor nativo que abrange todas as wallets do dispositivo, e o site nunca tem de detetar nem nomear uma wallet por si. O browser acrescenta ainda a origem que faz a chamada ao pedido, para que a wallet possa mostrar ao titular que site está a pedir e rejeitar um pedido copiado de outro sítio. É isso que torna o fluxo resistente a phishing e a ataques de relay.

A API é deliberadamente neutra quanto ao protocolo, e no ecossistema EUDI Wallet há duas ligações que contam: o OpenID4VP define um perfil próprio para a API, e a ISO/IEC 18013-7 Annex C liga-lhe a mesma troca mdoc. O EUDI ARF aborda-a como forma de melhorar a apresentação remota, desde que o browser forneça a origem da parte confiante para que uma Wallet Unit consiga perceber quem está a pedir, e desde que um fluxo entre dispositivos mantenha uma verificação de proximidade entre os dois. O device retrieval da ISO/IEC 18013-5 continua assim a ser o canal presencial, e não algo que a API do browser substitua.

O suporte já não é experimental. A API está ativada por predefinição no Chrome em Android e em desktop, e no Safari nas versões recentes da Apple, enquanto o Firefox não a ativou. Os browsers ainda diferem nos protocolos e formatos de credencial que aceitam, e em desktop o funcionamento assenta normalmente no emparelhamento com um telemóvel que tem a wallet, e não no armazenamento de credenciais no browser. Trate-a como uma melhoria para os browsers e dispositivos que a suportam, e mantenha o fluxo com código QR ou redirecionamento para os restantes.

Ler a explicação completa

Esta página dá a definição breve. A nossa explicação mostra o que significa na prática: quem está envolvido, como funciona e o que muda para a sua organização.

Digital Credentials API explicada

A Digital Credentials API substitui o OpenID4VP?

Não. A API é o canal de entrega: leva um pedido de um website até uma wallet através do sistema operativo e traz a resposta de volta. O que o pedido contém e como a resposta é verificada continua definido por um protocolo, o OpenID4VP para um pedido de apresentação ou a ISO/IEC 18013-7 Annex C para uma troca mdoc. Uma parte confiante que já usa OpenID4VP mantém o mesmo pedido e a mesma verificação, e ganha uma forma melhor de o entregar no dispositivo que o titular já está a usar.

Voltar ao glossário