Apresentação do teste de origem da API Digital Credentials

Um teste de origem da API Digital Credentials será iniciado no Chrome 128. A API Digital Credentials é uma nova API de plataforma da Web que permite que os sites solicitem seletivamente informações verificáveis sobre o usuário por meio de credenciais digitais, como a carteira de habilitação ou o documento de identidade nacional armazenado em uma carteira digital.

Contexto

A identidade digital real está se tornando uma realidade com muitas entidades públicas e privadas começando a emitir credenciais digitais vinculadas a dispositivos. Por exemplo, carteiras de habilitação e documentos de identificação em determinados estados dos EUA (como Arizona, Califórnia, Colorado, Geórgia e Maryland) agora podem ser provisionados para apps de carteira digital, como a Carteira do Google, em dispositivos móveis. Os regulamentos sobre a aceitação de credenciais digitais para determinadas verificações on-line também estão surgindo, e o eIDAS 2.0 é um exemplo.

Carteira de habilitação para dispositivos móveis na Carteira do Google
Carteira de habilitação para dispositivos móveis na Carteira do Google.

Os recursos de uma credencial digital dependem do formato dela, embora normalmente incluam:

  • Segurança e privacidade aprimoradas: o uso de criptografia avançada e métodos de autenticação avançados protege os dados sensíveis e garante o acesso. Por exemplo, a apresentação de uma credencial geralmente é protegida por uma autenticação do usuário no app de carteira.
  • Divulgação seletiva: as partes confiáveis (RP, na sigla em inglês) podem solicitar informações selecionadas da credencial, o que permite que os usuários limitem os dados compartilhados ao que é necessário para o caso de uso. Por exemplo, se um usuário tem mais de 18 anos pode ser compartilhado sem revelar sua data de nascimento.
  • Interoperabilidade: a credencial precisa aderir aos padrões internacionais, permitindo a compatibilidade entre diferentes sistemas e países, facilitando a aceitação internacional.
  • Verificabilidade: os dados das credenciais compartilhados são assinados digitalmente pelo emissor. A parte restrita pode verificar essa assinatura para confirmar a autenticidade dos dados.

Por causa das credenciais digitais natureza verificável, elas podem permitir casos de uso como:

  • Verificação de idade:solicite a confirmação de idade para confirmar a idade de uma pessoa antes de veicular conteúdo com restrição de idade ou comprar itens com essa limitação.
  • Verificação de identidade:solicite nome e endereço para confirmar a identidade de uma pessoa. Isso ajuda a compliance legal e evita fraudes.
  • Verificação de privilégios de direção:confirme a qualificação de uma pessoa para dirigir (por exemplo, ao alugar um carro).

À medida que os sites começaram a se comunicar diretamente com aplicativos de carteira para dispositivos móveis (por exemplo, usando esquemas de URL personalizados) para solicitar credenciais digitais para vários casos de uso, os navegadores veem uma oportunidade de tornar essa interação mais segura, resistente a abusos e fácil de usar por meio de uma API específica.

Introdução à API Digital Credentials

A API Digital Credentials é uma nova API de plataforma da Web que permite que os sites da RP solicitem a apresentação de credenciais digitais de apps de carteira. A API está disponível no Chrome como um teste de origem a partir do Chrome 128.

A API não depende de um protocolo, o que permite que a RP especifique um protocolo com base em seus requisitos. Quando uma parte restrita faz uma solicitação, o navegador a envia ao sistema operacional do dispositivo móvel, que pesquisa uma credencial correspondente nos aplicativos de carteira instalados. Se alguma for encontrada, o sistema operacional do dispositivo móvel solicitará que o usuário selecione uma e enviará a solicitação para a carteira selecionada pelo usuário. Após uma autenticação local, a carteira retorna uma resposta contendo os dados da credencial solicitada.

Diagrama de comunicação entre o navegador, a carteira e a parte confiável.

Primeiro, o Google Chrome oferecerá suporte à API no Google Chrome no Android para solicitar credenciais de aplicativos de carteira no mesmo dispositivo. No futuro, planejamos oferecer suporte ao Chrome para computador para solicitar credenciais entre dispositivos a partir de outros dispositivos móveis.

No lançamento, a Carteira do Google será integrada à API Digital Credentials, permitindo que empresas e organizações selecionadas iniciem uma solicitação para que os usuários apresentem o documento de identificação on-line pelo Chrome no Android e verifiquem a autenticidade dos dados transmitidos examinando a assinatura criptográfica. Para participar, preencha este formulário para demonstrar interesse em aceitar documentos de identificação digitais da Carteira do Google.

Em breve, a API também será usada pelas Contas do Google para verificar as contas de data de nascimento. Os usuários que moram em um estado dos EUA aceito poderão usar o documento de identificação estadual ou a carteira de habilitação fornecida nos apps de carteira disponíveis (incluindo a Carteira do Google) para compartilhar apenas a data de nascimento com o Google sem compartilhar outros detalhes de identidade. Assim, os usuários podem comprovar ao Google, preservando a privacidade, que atendem aos requisitos de idade relacionados à conta.

Faça um teste

Para testar a API Digital Credentials, siga as instruções:

  1. Instale o aplicativo de carteira de demonstração seguindo as instruções descritas nesta página.
  2. Abra o app Carteira de IC e forneça uma carteira de habilitação para dispositivos móveis (mDL) de demonstração.
    • Toque no botão de menu e selecione Adicionar documento autoassinado.
  3. Acesse https://digital-credentials.dev com o Chrome 128 ou posterior.
  4. Pressione Solicitar credenciais (OpenID4VP).

Confira a demonstração que está usando https://digital-credentials.dev, um site de teste para desenvolvedores gerar solicitações de credenciais para diferentes atributos:

Confira as etapas da demonstração:

1: O usuário acessa o site da parte confiável e precisa apresentar o sobrenome confirmado, o nome e uma confirmação de idade de mais de 21 anos.
.
2: O navegador confirma se o usuário pretende compartilhar alguma credencial digital com o site.
3: O sistema operacional exibe as informações solicitadas e as credenciais qualificadas que podem corresponder à solicitação para que o usuário selecione e conclua a solicitação.
.
4) A carteira autentica localmente o usuário com o desbloqueio de tela.

5) A credencial digital solicitada agora é transmitida para o site da parte confiável.

Como a API funciona

A API Digital Credentials foi criada com base na API Credential Management, mas usa uma plataforma de API independente: navigator.identity. Ao chamar navigator.identity.get(), o site pode solicitar uma credencial digital armazenada em um app de carteira para dispositivos móveis. ,

// Gets a CBOR with specific fields out of mobile driver's license as an mdoc
const controller = new AbortController();
const {protocol, data} = await navigator.identity.get({
  signal: controller.signal,
  digital: {
    providers: [{
      protocol: "openid4vp",
      request: {
        response_type: "vp_token",
        nonce: "n-0S6_WzA2Mj",
        client_metadata: {...},
        presentation_definition: {...}
      }
    }],
  }
});

A plataforma básica da API é semelhante a navigator.credentials.get(), mas aceita apenas o tipo de credencial "digital". No tipo de credencial digital, adicione a matriz providers que contém IdentityRequestProvider com os seguintes parâmetros básicos:

Exemplo de payload para o tipo de credencial digital usando o OID4VP:

{
  protocol: 'openid4vp',
  request: {
    response_type: 'vp_token',
    nonce: 'gf69kepV+m5tGxUIsFtLi6pwg=',
    client_metadata: {},
    presentation_definition: {     
      id: 'mDL-request-demo',
      input_descriptors: [{
        id: "org.iso.18013.5.1.mDL",
        format: {
          mso_mdoc: {
            alg: ["ES256"]
          }
        },
        constraints: {
          limit_disclosure: "required",
          fields: [
            {
              path: ["$['org.iso.18013.5.1']['family_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['given_name']"],
              intent_to_retain: false
            }, {
              path: ["$['org.iso.18013.5.1']['age_over_21']"],
              intent_to_retain: false
            }
          ]
        }
      }],
    }
  }
}

Com essa solicitação, as carteiras que têm mDLs no dispositivo fornecerão um conjunto verificável de credenciais que contém:

  • Sobrenome do usuário.
  • Nome do usuário.
  • Um valor booleano que indica se o usuário tem mais de 21 anos ou não.

Confira um exemplo de payload de resposta:

{
  data: '{\n  "vp_token": "o2d2ZXJzaW9uYz..."\n}'
  id: '',
  protocol: 'openid4vp',
  type: 'digital'
}

Neste exemplo, a credencial foi solicitada com o protocolo "openid4vp", e a resposta contém "vp_token" na propriedade data. Consulte a especificação OpenID para apresentação verificável (OID4VP) para a API W3C Digital Credentials para saber como analisar a resposta e verificar a credencial.

A API Digital Credentials é compatível com o Chrome no Android como um teste de origem. No momento, o Chrome para computador e iOS não é compatível com ela. Para outros mecanismos de navegador, as conversas ativas estão sendo simplificadas pelo Grupo da Comunidade Incubadora da Web do W3C (em inglês).

Participar do teste de origem

Para o desenvolvimento, você pode ativar a API Digital Credentials localmente ativando a sinalização chrome://flags#web-identity-digital-credentials do Chrome no Chrome 128 ou mais recente.

Esse recurso também está disponível como um teste de origem. Os testes de origem permitem que você teste novos recursos e dê feedback sobre usabilidade, praticidade e eficácia para a comunidade de padrões da Web. Para mais informações, consulte Introdução aos testes de origem. Para se inscrever neste ou em outro teste de origem, acesse a página de registro.

  1. Solicite um token para sua origem.
  2. Adicione o token às suas páginas. Há duas maneiras de fazer isso:
    • Adicione uma tag <meta> origin-trial ao cabeçalho de cada página. Por exemplo, o resultado poderá ser parecido com este: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
    • Se for possível configurar o servidor, você também poderá adicionar o token usando um cabeçalho HTTP Origin-Trial. O cabeçalho de resposta resultante será parecido com este:Origin-Trial: TOKEN_GOES_HERE.
.

Compartilhar feedback

Se você tiver algum feedback sobre a API Digital Credentials, envie para o Issue Tracker dedicado do Chromium.