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

Publicado em 4 de setembro de 2024, Última atualização: 16 de outubro de 2024

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

Contexto

A identidade digital do mundo real está se tornando uma realidade, com muitas entidades públicas e privadas começando a emitir credenciais digitais vinculadas a dispositivos. Por exemplo, agora é possível provisionar carteiras de habilitação e documentos de identificação em alguns estados dos EUA (como Arizona, Califórnia, Colorado, Geórgia e Maryland) em apps de carteira digital, como a Carteira do Google em dispositivos móveis. Regulamentações sobre a aceitação de credenciais digitais para determinadas verificações on-line também estão surgindo, e a 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, mas geralmente incluem:

  • Segurança e privacidade aprimoradas: o uso de criptografia avançada e métodos de autenticação fortes ajuda a proteger dados sensíveis e garante o acesso seguro. 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, é possível compartilhar se um usuário tem mais de 18 anos sem revelar a data de nascimento dele.
  • 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 de credenciais compartilhados são assinados digitalmente pelo emissor. O RP pode verificar essa assinatura para verificar a autenticidade dos dados.

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

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

Como os sites começaram a se comunicar diretamente com aplicativos de carteiras 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 mais fácil de usar com uma API específica.

Apresentação da API Digital Credentials

A API Digital Credentials é uma nova API da plataforma da Web que permite que os sites de 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 protocolo, permitindo que o RP especifique um protocolo com base nos requisitos. Quando um RP faz uma solicitação, o navegador a envia ao sistema operacional móvel, que procura uma credencial correspondente nos apps de carteira instalados. Se algum deles for encontrado, o sistema operacional móvel vai solicitar que o usuário selecione um e enviar a solicitação para a carteira selecionada. 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.

O Chrome vai oferecer suporte à API no Chrome para Android para solicitar credenciais de apps de carteira no mesmo dispositivo. No futuro, planejamos oferecer suporte ao Chrome para computador para solicitar credenciais em vários dispositivos de outro dispositivo móvel.

Na versão de lançamento, a Carteira do Google vai ser integrada à API Digital Credentials, permitindo que algumas empresas e organizações iniciem uma solicitação para que os usuários apresentem um 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 e expresse seu interesse em aceitar documentos de identificação digital da Carteira do Google.

Em breve, a API também será usada pelas Contas do Google para verificar a data de nascimento de alguns usuários. Os usuários que moram em um estado dos EUA com suporte poderão usar o documento de identificação estadual ou a carteira de habilitação provisionado 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 da identidade. Isso permite que os usuários demonstrem ao Google, de forma a preservar a privacidade, que atendem aos requisitos de idade relacionados à conta.

Faça um teste

Requisitos:

  • Google Play Services 23.40 ou mais recente
  • Chrome 128 ou mais recente
  • Ative a flag em chrome://flags#web-identity-digital-credentials

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

  1. Instale o aplicativo de carteira de demonstração seguindo as instruções.
  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 mais recente.
  4. Pressione Solicitar credenciais (OpenID4VP).

Confira a demonstração que usa 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 é solicitado a apresentar o sobrenome, o nome e a idade verificada de mais de 21 anos.
2. O navegador confirma se o usuário pretende compartilhar alguma credencial digital com esse site.
3. O sistema operacional mostra 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 o usuário localmente 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 à navigator.credentials.get(), mas só aceita o tipo de credencial "digital". No tipo de credencial digital, adicione uma matriz providers que contenha IdentityRequestProvider com os seguintes parâmetros básicos:

Exemplo de payload para o tipo de credencial digital usando 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 vão fornecer 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 tem suporte no Chrome no Android como um teste de origem. No momento, o Chrome para computador e iOS não oferece suporte a esse recurso. Para outros mecanismos de navegador, as conversas ativas estão sendo facilitadas pelo Grupo da comunidade do Incubator da Web do W3C.

Participar do teste de origem

Para desenvolvimento, é possível ativar a API Digital Credentials localmente ativando a flag chrome://flags#web-identity-digital-credentials do Chrome 128 ou mais recente.

Esse recurso também está disponível como um teste de origem. Com eles, você pode testar novos recursos e fornecer feedback sobre usabilidade, praticidade e eficácia aos padrões da comunidade da Web. Para mais informações, consulte Começar a usar os 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, pode ser algo como: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
    • Se for possível configurar seu servidor, também é possível adicionar o token usando um cabeçalho HTTP Origin-Trial. O cabeçalho de resposta resultante vai 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 do Chromium (em inglês).