Configure o compartilhamento contínuo de credenciais entre apps e sites Android

Maximize a conveniência do usuário ativando o compartilhamento de credenciais contínuo em várias plataformas nos seus apps e sites. Quando vários sites e apps Android compartilham um back-end de gerenciamento de contas, esse recurso permite que os usuários salvem as credenciais uma vez e as tenham sugeridas automaticamente em qualquer site ou app Android vinculado.

Práticas recomendadas

Para ter a melhor experiência e segurança do usuário, implemente o compartilhamento contínuo de credenciais nestes pontos de contato:

  • Formulário de login: ative o preenchimento automático de credenciais.
  • Formulário de inscrição: armazene novas credenciais com segurança para usar em várias plataformas.
  • Formulário de alteração de senha: sincronize as atualizações de senha em todas as plataformas.
  • Formulário de redefinição de senha: permita que as redefinições de senha única atualizem todas as plataformas.
  • Domínios de WebView: estenda o compartilhamento de credenciais para domínios de WebView no app que processam o gerenciamento de contas (login do host, inscrição, alteração de senha ou formulários de redefinição de senha).
  • Apps Android

Essa abordagem cria um sistema de gerenciamento de credenciais unificado, melhorando a conveniência e a segurança do usuário.

Ao projetar seus sites de gerenciamento de contas, sugerimos que você siga estas práticas recomendadas:

Ao projetar seus apps Android, recomendamos que você integre o app ao Gerenciador de credenciais do Android.

Pré-requisitos

Antes de configurar o compartilhamento de credenciais integrado, verifique se você tem o seguinte para cada plataforma:

Para cada app Android:

Para cada site:

  • Capacidade de publicar um arquivo /.well-known/assetlinks.json em cada domínio respectivo, seguindo a sintaxe do Digital Asset Links (DALs).
  • Todos os domínios de gerenciamento de contas (formulários de login, inscrição, alteração de senha ou redefinição de senha) precisam ser acessíveis por HTTPS.

Ativar o compartilhamento de credenciais entre apps Android e sites

Para configurar o compartilhamento de credenciais entre apps e sites, crie e publique listas de declarações de Digital Asset Links que declarem quais entidades (sites ou apps Android) podem compartilhar credenciais.

Para declarar uma relação de compartilhamento de credenciais:

  1. Crie um arquivo assetlinks.json com instruções que vinculam ao site e ao app Android, seguindo a sintaxe da lista de instruções de DALs:

    [
      {
        "relation":[
          "delegate_permission/common.get_login_creds"
        ],
        "target":{
          "namespace":"web",
          "site":URL
        }
      },
      {
        "relation":[
          "delegate_permission/common.get_login_creds"
        ],
        "target":{
          "namespace":"android_app",
          "package_name":"APP_ID",
          "sha256_cert_fingerprints":[
            "SHA_HEX_VALUE"
          ]
        }
      }
    ]
    

    Em que URL é o URL do seu site, APP_ID é o ID do aplicativo Android e SHA_HEX_VALUE é a impressão digital SHA256 do certificado de assinatura do seu app Android.

    O campo relation descreve a relação que está sendo declarada. Para declarar que apps e sites compartilham credenciais de login, especifique as relações como delegate_permission/common.get_login_creds. Saiba mais sobre strings de relação em DALs.

    O campo target é um objeto que especifica o recurso a que a declaração se aplica.

    Os campos a seguir identificam um site:

    namespace

    web

    site

    O URL do site, no formato https://domain[:optional_port], por exemplo, https://www.example.com.

    O domain precisa ser totalmente qualificado, e optional_port precisa ser omitido ao usar a porta 443 para HTTPS.

    Um destino site só pode ser um domínio raiz. Não é possível limitar uma associação de app a um subdiretório específico. Não inclua um caminho no URL, como uma barra final.

    Não é esperado que os subdomínios apresentem correspondências: ou seja, se você especificar domain como www.example.com, o domínio www.counter.example.com não será associado ao app.

    Os campos a seguir identificam um app Android.

    namespace

    android_app

    package_name

    Nome do pacote declarado no manifesto do app. Por exemplo, com.example.android

    sha256_cert_fingerprints

    As impressões digitais SHA256 do certificado de assinatura do app

  2. Hospede o arquivo JSON do Digital Asset Links no seguinte local nos domínios de login: https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json, em que DOMAIN é totalmente qualificado e OPTIONAL_PORT precisa ser omitido ao usar a porta 443 para HTTPS.

  3. Declare a associação no app Android incorporando uma instrução no arquivo res/values/strings.xml do app Android que vincula à lista de instruções que você criou na etapa 1. Adicione um objeto que especifique os arquivos assetlinks.json a serem carregados. Exemplo:

      <string name="asset_statements" translatable="false">
    [{
      \"include\": \"https://DOMAIN[:OPTIONAL_PORT]/.well-known/assetlinks.json\"
    }]
    </string>
    

    Substitua DOMAIN e OPTIONAL_PORT (precisa ser omitido ao usar a porta 443 para HTTPS), por exemplo, https://www.example.com. Faça o escape de todos os apóstrofos e aspas que você usa na string.

    Também é possível adicionar um snippet JSON no arquivo strings.xml, conforme mostrado na documentação de DALs, mas o uso da instrução include permite mudar instruções sem publicar uma nova versão do app.

  4. Faça referência à instrução no manifesto adicionando a seguinte linha ao arquivo AndroidManifest.xml do app em <application>:

    <meta-data android:name="asset_statements" android:resource="@string/asset_statements"/>
    
  5. Publique a nova versão do seu app Android no Google Play Console

Depois de seguir estas etapas, você terá configurado o compartilhamento de credenciais perfeito entre o site e o app Android.

Observe que essa não é a única maneira válida de configurar DALs para compartilhamento de credenciais, mas essa abordagem simplifica o processo futuro de adicionar novas entidades à sua rede integrada de compartilhamento de credenciais, promove a reutilização do código e reduz o potencial de erros durante as atualizações.