Em maio de 2016, lançamos a versão mais recente do Google Identity Toolkit como Firebase Authentication e, em abril de 2019, lançamos o Identity Platform do Google Cloud . Esses produtos incluem SDKs de cliente atualizados, bibliotecas de IU de código aberto, gerenciamento de sessão e serviço de envio de e-mail integrado para fluxos de senha esquecida.

Em 30 de junho de 2020 , os SDKs documentados nesta página e na página de configuração da API deixarão de funcionar. (Os https://identitytoolkit.googleapis.com/... e https://securetoken.googleapis.com/... , usados ​​pela Identity Platform e Firebase Authentication, continuarão funcionando.)

Para migrar um projeto existente do Identity Toolkit, consulte o guia de migração do Identity Platform ou o guia de migração do Firebase Authentication .

Migrar do Google Identity Toolkit para a plataforma de identidade do Google Cloud

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

A versão mais recente do Google Identity Toolkit foi lançada como Identity Platform e Firebase Authentication. A partir de agora, o trabalho com recursos no Identity Toolkit será congelado. Todo o desenvolvimento de novo recurso será feito no Identity Platform e no Firebase Authentication. Incentivamos os desenvolvedores do Identity Toolkit a migrar para essas plataformas assim que for prático para os aplicativos.

Novos recursos

O Identity Platform já tem melhorias de recursos significativas no Google Identity Toolkit:

  • Novo Admin Console

    O Identity Platform tem um novo console para desenvolvedores que permite visualizar, modificar e excluir seus usuários. Isso pode ser útil para depurar os fluxos de login e inscrição. O console também permite que você configure métodos de autenticação e personalize modelos de e-mail.

  • Novos métodos de autenticação

    O Identity Platform oferece suporte a padrões de federação empresariais, como SAML e OIDC, permitindo o escalonamento de apps e serviços SaaS. O Identity Platform também oferece suporte a provedores como GitHub, Microsoft, Yahoo e outros. É possível usar o login anônimo para criar um ID de usuário único sem exigir que o usuário passe por qualquer processo de login ou inscrição. Isso permite que você faça chamadas de API autenticadas, como faria com um usuário normal. Quando o usuário decide se inscrever em uma conta, todas as atividades são preservadas com o mesmo ID do usuário. Isso é útil em cenários como carrinhos de compras do lado do servidor ou outros aplicativos em que você quer engajar o usuário antes de enviá-lo por meio de um fluxo de inscrição.

  • Aumente a confiança com contratos de nível de serviço e o suporte do Cloud

    O Identity Platform é desenvolvido em uma infraestrutura confiável do Google e fornece contratos de nível de serviço e suporte do Google Cloud. Isso significa que é possível escalonar o serviço com confiança e confiar no Google para oferecer a resiliência, a disponibilidade e a escalonabilidade de que você precisa.

  • Acesso a todo o Firebase

    O Firebase é uma plataforma para dispositivos móveis que ajuda você a desenvolver rapidamente apps de alta qualidade, aumentar sua base de usuários e ganhar mais dinheiro. O Firebase é composto de recursos complementares que podem ser combinados para atender às suas necessidades e inclui infraestrutura para: análises, mensagens na nuvem, banco de dados em tempo real, armazenamento de arquivos, hospedagem estática, configuração remota, relatórios de falhas para dispositivos móveis e testes para Android.

  • IUs atualizadas

    Reformulamos completamente os fluxos de IU com base na pesquisa mais recente de UX do Google. Isso inclui recuperação de senha, vinculação de conta, fluxos de desambiguação de contas novas/existentes que geralmente levam um tempo significativo para codificar e depurar. Ele integra o Smart Lock para senhas no Android, que melhorou significativamente a conversão de login e inscrição para apps participantes. Ele também oferece suporte a modificações fáceis de tema para corresponder ao aplicativo e, para a personalização máxima, as versões para Android e iOS tiveram código aberto.

  • Configuração simplificada do servidor

    Com o Identity Toolkit, vimos que muitos desenvolvedores decidiram não implementar o fluxo de recuperação de e-mail, o que impossibilita que usuários recuperassem contas se esquecissem a senha. O Identity Platform pode enviar a verificação de e-mail, a redefinição de senha e as mensagens de senha alteradas para o usuário, e o texto pode ser facilmente personalizado para seus usuários. Além disso, você não precisa mais hospedar os widgets de IU para hospedar redirecionamentos e concluir operações de alteração de senha.

  • Novos SDKs

    Todas as APIs de servidor do Identity Toolkit estão disponíveis de maneira nativa em cada uma das nossas bibliotecas de cliente (Android, iOS, Web). Os desenvolvedores poderão fazer login e inscrever usuários antigos e novos, acessar propriedades do usuário, vincular, atualizar e excluir contas, redefinir senhas e muito mais, sem se vincularem a uma IU fixa. Se preferir, crie manualmente todo o fluxo e a experiência completa de login usando essa API.

  • Gerenciamento de sessão em apps para dispositivos móveis

    Com o Identity Toolkit, os aplicativos criaram o próprio estado de sessão com base no evento de autenticação inicial do Identity Toolkit. O Identity Platform usa um serviço de back-end que usa um token de atualização, é gerado pelo evento de autenticação e o troca por tokens de acesso de uma hora para Android, iOS e JavaScript. Quando um usuário muda a senha, os tokens de atualização não podem mais gerar novos tokens de acesso. Portanto, o acesso é desativado até que o usuário se autentique novamente no dispositivo.

Diferenças de recursos

Alguns recursos do Identity Toolkit não estão disponíveis no Identity Platform no momento, enquanto outros recursos foram reformulados e funcionam de forma diferente. Você pode escolher não migrar imediatamente se esses recursos forem importantes para o app. Em muitos casos, esses recursos podem não ser importantes para o app ou podem existir substitutos fáceis que permitirão que você prossiga com a migração.

Diferenças no lado do servidor

O serviço principal do Identity Toolkit, com as APIs REST subjacentes, a lógica de validação da conta e o banco de dados de usuário principal, passou por apenas pequenas atualizações. Mas alguns recursos e a maneira como você integra o Identity Platform ao seu serviço mudaram.

  • Provedores de identidade

    Paypal e AOL não são aceitos. Usuários com contas desses IdPs ainda podem fazer login no aplicativo com o fluxo de recuperação de senha e definir uma senha para a conta.

  • Bibliotecas de servidor

    No momento, há SDKs Admin disponíveis para Java, Node.js, Python, Go e C#.

  • E-mails de gerenciamento da conta

    As mensagens de redefinição de senha, verificação de e-mail e alteração de e-mail podem ser realizadas pelo Firebase ou pelo servidor de e-mail do próprio desenvolvedor. Atualmente, os modelos de e-mail oferecem apenas personalização limitada da IU, mas podem ser ainda mais personalizados com os SDKs Admin

  • Confirmação de alteração do endereço de e-mail

    No Identity Toolkit, quando um usuário decide alterar o endereço de e-mail, ele envia um e-mail para o novo endereço que tem um link para continuar o fluxo de alteração de endereço de e-mail.

    O Firebase confirma a alteração do endereço de e-mail enviando um e-mail de revogação para o endereço de e-mail antigo com um link para reverter a alteração.

  • Lançamento do IdP

    O Identity Toolkit conseguiu adicionar gradualmente os provedores de identidade ao seu sistema de login para que você possa testar o impacto nas solicitações de suporte. Este recurso foi removido no Firebase Authentication.

Diferenças do lado do cliente

No Identity Platform, os recursos fornecidos pelo Google Identity Toolkit são divididos em dois componentes:

  • SDKs de cliente e servidor

    No Identity Platform, a funcionalidade fornecida pela API REST do Identity Toolkit é integrada aos SDKs do cliente disponíveis para Android, iOS e JavaScript. É possível usar o SDK para fazer login e inscrever usuários, acessar informações do perfil do usuário, vincular, atualizar e excluir contas e redefinir senhas usando o SDK do cliente em vez de se comunicar com o serviço de back-end por chamadas REST.

  • Widget da IU

    Todos os fluxos de IU que gerenciam login, inscrição, recuperação de senha e vinculação de conta foram recriados com os SDKs do cliente e empacotados como um widget de login. Elas estão disponíveis como SDKs de código aberto para iOS, Android e Web e permitem que você personalize completamente os fluxos de maneiras não possíveis com o Identity Toolkit.

Outras diferenças incluem:

  • Sessões e migração

    Como as sessões são gerenciadas de forma diferente no Identity Toolkit e no Identity Platform, suas sessões atuais dos usuários serão encerradas após o upgrade do SDK, e os usuários precisarão fazer login novamente.

Antes de começar

Antes de migrar do Identity Toolkit para o Identity Platform, você precisa:

  1. Abra o Console do Cloud e selecione seu projeto do Identity Toolkit.

  2. No Marketplace, navegue até Identity Platform e selecione 'Ativar o Identity Platform'

  3. Abra a Contas de serviço. Veja a conta de serviço que você configurou anteriormente para o Identity Toolkit.

  4. Ao lado da conta de serviço, clique em > Criar chave. Em seguida, na caixa de diálogo Criar chave privada, defina o tipo de chave como JSON e clique em Criar. Um arquivo JSON contendo as credenciais da sua conta de serviço será transferido por download. Você precisará dele para inicializar o SDK na próxima etapa.

  5. Volte para o Console do Cloud. Na seção "Provedores", no método de login 'E-mail/senha' abra a página Modelos de e-mail. Em seguida, você pode personalizar os modelos do seu app.

    No Identity Toolkit, quando os usuários redefinem senhas, alteravam endereços de e-mail ou verificam os endereços de e-mail, você precisava receber um código OOB do servidor do Identity Toolkit e, em seguida, enviar o código para os usuários por e-mail. O Identity Platform envia e-mails com base nos modelos que você configurar, sem outras ações necessárias.

  6. Opcional: se você precisa acessar os serviços do Identity Platform no servidor, instale o SDK do Firebase.

    1. É possível instalar o SDK Admin para Node.js com npm:

      $ npm init
      $ npm install --save firebase-admin
      
    2. No seu código, é possível acessar o Firebase usando:

      var admin = require('firebase-admin');
      var app = admin.initializeApp({
        credential: admin.credential.cert('path/to/serviceAccountCredentials.json')
      });
      

Em seguida, conclua as etapas de migração para a plataforma do seu app: Android, iOS ou Web.

Servidores e JavaScript

Principais mudanças

Há uma série de diferenças adicionais na implementação da Web do Identity Platform em relação ao Identity Toolkit.

  • Gerenciamento de sessões da Web

    Antes, quando um usuário fazia a autenticação usando o widget do kit de ferramentas de identidade, um cookie era definido para o usuário que era usado para inicializar a sessão. Esse cookie tinha uma vida útil de duas semanas e foi usado para permitir que o usuário utilize o widget de gerenciamento de contas para alterar a senha e o endereço de e-mail. Alguns sites usaram esse cookie para autenticar todas as outras solicitações na página. Outros sites usaram o cookie para criar seus próprios cookies por meio do sistema de gerenciamento de cookies do framework.

    Os SDKs do cliente do Identity Platform agora gerenciam tokens de ID e funcionam com o back-end do Identity Platforms para manter a sessão atualizada. O back-end expira sessões quando ocorrem mudanças importantes na conta (como mudanças de senha do usuário). Os tokens de código não são definidos automaticamente como cookies no cliente Web e têm somente uma hora de vida útil. Os tokens de código não são apropriados como o cookie para validar todas as solicitações de página, a menos que você queira sessões de apenas uma hora. Em vez disso, você precisará configurar um listener para quando o usuário fizer login, receber o token de ID, validar o token e criar seu próprio cookie por meio do sistema de gerenciamento de cookies do framework.

    Você precisará definir o ciclo de vida da sessão do cookie com base nas necessidades de segurança do aplicativo.

  • Fluxo de login na Web

    Anteriormente, os usuários eram redirecionados para accountchooser.com quando o login era iniciado para saber qual identificador o usuário queria usar. O fluxo da IU do Identity Platform começa com uma lista de métodos de login, incluindo uma opção de e-mail que vai para accountchooser.com na Web e usa a API hintRequest no Android. Além disso, os endereços de e-mail não são mais necessários na IU. Isso facilitará o suporte a usuários anônimos, usuários de autenticação personalizados ou usuários de provedores em que endereços de e-mail não são obrigatórios.

  • Widget de gerenciamento de conta

    Esse widget fornece uma IU para os usuários modificarem endereços de e-mail, mudar a senha ou desvincular as contas dos provedores de identidade. Ela está em desenvolvimento.

  • Botão/widget de login

    Widgets como o botão de login e o card do usuário não são mais fornecidos. Eles podem ser criados com muita facilidade usando a API Firebase Authentication.

  • Nenhum signOutUrl

    Será necessário chamar firebase.auth.signOut() e processar o callback.

  • Nenhuma oobActionUrl

    O envio de e-mails agora é processado pelo Identity Platform e é configurado no Console do Firebase.

  • Personalização de CSS

    O widget da IU usa o estilo Material Design Lite, que adiciona dinamicamente animações de Material Design.

Etapa 1: alterar o código do servidor

  1. Se o servidor depender do token do Identity Toolkit (válido por duas semanas) para gerenciar sessões de usuário da Web, você precisará converter o servidor para usar o próprio cookie de sessão.

    1. Implemente um endpoint para validar o token de ID e configurar o cookie da sessão para o usuário. O app cliente envia o token do ID do Firebase para esse endpoint.
    2. Se a solicitação recebida contiver seu próprio cookie de sessão, você poderá considerar o usuário autenticado. Caso contrário, trate a solicitação como não autenticada.
    3. Se você não quiser que seus usuários percam as sessões conectadas, aguarde duas semanas para que todos os tokens do Identity Toolkit expirem ou faça a validação do token duplo para seu aplicativo da Web, conforme descrito abaixo na etapa 3.
  2. Em seguida, como os tokens de ID são diferentes dos tokens do Identity Toolkit, você precisa atualizar sua lógica de validação de token. Instale o SDK Admin no servidor ou, se você usar uma linguagem incompatível com o SDK Admin, faça o download de uma biblioteca de validação de tokens JWT para o ambiente e valide corretamente o token.

  3. Ao fazer as atualizações acima pela primeira vez, você ainda pode ter caminhos de código que dependem de tokens do Identity Toolkit. Se você tiver aplicativos iOS ou Android, os usuários precisarão fazer upgrade para a nova versão do app para que os novos caminhos de código funcionem. Se você não quiser forçar os usuários a atualizar o app, adicione outra lógica de validação do servidor que examine o token e determine se ele precisa usar o SDK do Firebase ou o SDK do kit de ferramentas de identidade para validar o token. Se você tiver apenas um aplicativo da Web, todas as novas solicitações de autenticação serão transferidas para o Identity Platform. Portanto, basta usar os métodos de verificação do token de ID.

Consulte a Referência da API da Web.

Etapa 2: atualizar o HTML

  1. Adicione o código de inicialização ao app:

    1. Abra seu projeto no Console do Cloud.
    2. Na página Provedores, clique em Detalhes da configuração do aplicativo. Um snippet de código que inicializa o Identity Platform é exibido.
    3. Copie e cole o snippet de inicialização na sua página da Web.
  2. Adicione o widget de autenticação ao app:

    <script src="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.js"></script>
    <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.css" />
    <!-- *******************************************************************************************
       * TODO(DEVELOPER): Paste the initialization snippet from:
       * Firebase Console > Overview > Add Firebase to your web app. *
       ***************************************************************************************** -->
    <script type="text/javascript">
      // FirebaseUI config.
      var uiConfig = {
        'signInSuccessUrl': '<url-to-redirect-to-on-success>',
        'signInOptions': [
          // Leave the lines as is for the providers you want to offer your users.
          firebase.auth.GoogleAuthProvider.PROVIDER_ID,
          firebase.auth.FacebookAuthProvider.PROVIDER_ID,
          firebase.auth.TwitterAuthProvider.PROVIDER_ID,
          firebase.auth.GithubAuthProvider.PROVIDER_ID,
          firebase.auth.EmailAuthProvider.PROVIDER_ID
        ],
        // Terms of service url.
        'tosUrl': '<your-tos-url>',
      };
    
      // Initialize the FirebaseUI Widget using Firebase.
      var ui = new firebaseui.auth.AuthUI(firebase.auth());
      // The start method will wait until the DOM is loaded.
      ui.start('#firebaseui-auth-container', uiConfig);
    </script>
    
  3. Remover o SDK do kit de ferramentas de identidade do seu app

  4. Se você usou o token do ID do kit de ferramentas de identidade para o gerenciamento de sessões, faça as seguintes mudanças no lado do cliente:

    1. Depois de fazer login com o Identity Platform, receba um token de ID chamando firebase.auth().currentUser.getToken().

    2. Enviar o token de código para o servidor de back-end, validá-lo e emitir seu próprio cookie de sessão.

      Não dependa apenas do cookie da sessão ao realizar operações confidenciais ou enviar solicitações de edição autenticadas para seu servidor. Você precisará fornecer proteção adicional contra falsificação de solicitação entre sites (CSRF, na sigla em inglês).

      Se o framework não oferecer proteção ao CSRF, uma maneira de evitar um ataque seria conseguir um token de ID para o usuário conectado com getToken() e incluir esse token em cada solicitação. O cookie de sessão também será enviado por padrão. Em seguida, você validaria esse token usando o SDK Admin, além da verificação de cookies da sessão, que foi concluída pelo framework de back-end. Isso vai dificultar o sucesso dos ataques de CSRF, já que o token de ID é armazenado apenas por meio do armazenamento da Web e nunca em um cookie.

    3. Os tokens do Identity Toolkit são válidos por duas semanas. É possível continuar emitindo tokens com duração de duas semanas ou pode deixá-los mais longos ou mais curtos com base nos requisitos de segurança do app. Quando um usuário sair, limpe o cookie de sessão.

Etapa 3: atualizar os URLs de redirecionamento do IdP

  1. No Console do Cloud, abra a seção Provedores.

  2. Para cada provedor de login federado compatível, faça o seguinte:

    1. Clique no nome do provedor de login.
    2. Copie o URI de redirecionamento OAuth.
    3. No console do desenvolvedor do provedor de login, atualize o URI de redirecionamento OAuth.

Android

Etapa 1: adicionar o Identity Platform ao app com o Firebase

  1. Abra o Console do Cloud e selecione o projeto do Identity Toolkit.

  2. Na página "Provedores", clique em Detalhes da configuração do aplicativo, selecione a guia Android e clique em Primeiros passos no Firebase. Na caixa de diálogo "Adicionar Firebase", forneça o nome do pacote do app e a impressão digital do certificado de assinatura e clique em Adicionar app. O arquivo de configuração google-services.json será transferido por download para o computador.

  3. Copie o arquivo de configuração para o diretório raiz do módulo de app Android. Esse arquivo de configuração contém as informações do cliente OAuth do projeto e do Google.

  4. No arquivo build.gradle do projeto (<var>your-project</var>/build.gradle), especifique o nome do pacote do app na seção defaultConfig:

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. Também no arquivo build.gradle no nível do projeto, adicione uma dependência para incluir o plug-in google-services:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. No arquivo build.gradle no nível do app (<var>my-project</var>/<var>app-module</var>/build.gradle) do app, adicione a linha abaixo após o Plug-in do Android para Gradle para ativar o plug-in google-services:

    apply plugin: 'com.android.application'
    // Add this line
    apply plugin: 'com.google.gms.google-services'
    

    O plug-in google-services usa o arquivo google-services.json para configurar seu aplicativo para usar o Firebase.

  7. Também no arquivo build.gradle no nível do app, adicione a dependência do Firebase Authentication:

    compile 'com.google.firebase:firebase-auth:21.0.8'
    compile 'com.google.android.gms:play-services-auth:20.3.0'
    

Etapa 2: remover o SDK do kit de ferramentas de identidade

  1. Remova a configuração do Identity Toolkit do arquivo AndroidManifest.xml. Essas informações estão incluídas no arquivo google-service.json e carregadas pelo plug-in google-services.
  2. Remover o SDK do kit de ferramentas de identidade do seu app

Etapa 3: adicionar a FirebaseUI ao seu app

  1. Adicione FirebaseUI Auth ao seu app.

  2. No app, substitua as chamadas para o SDK do kit de ferramentas de identidade por chamadas para a FirebaseUI.

iOS

Etapa 1: adicionar o Firebase ao app

  1. Adicione o SDK do cliente ao seu app executando os seguintes comandos:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Abra o Console do Cloud e selecione o projeto do Identity Toolkit.

  3. Na página "Provedores", clique em Detalhes da configuração do aplicativo, selecione a guia iOS e clique em Primeiros passos no Firebase. Na caixa de diálogo "Adicionar Firebase", forneça o nome do pacote do app e a impressão digital do certificado de assinatura e clique em Adicionar app. O arquivo de configuração google-services.json será transferido por download para o computador. Na caixa de diálogo "Adicionar Firebase", forneça o ID do pacote do app e o ID da App Store e clique em Adicionar app. O arquivo de configuração GoogleService-Info.plist é transferido por download para o computador. Se o projeto tiver vários IDs de pacotes, cada um deles precisa estar conectado ao Console do Firebase para que tenha o próprio arquivo GoogleService-Info.plist.

  4. Copie o arquivo de configuração para a raiz do seu projeto Xcode e adicione-o a todos os destinos.

Etapa 2: remover o SDK do kit de ferramentas de identidade

  1. Remova GoogleIdentityToolkit do Podfile do app.
  2. Execute o comando pod install.

Etapa 3: adicionar a FirebaseUI ao seu app

  1. Adicione FirebaseUI Auth ao seu app.

  2. No app, substitua as chamadas para o SDK do kit de ferramentas de identidade por chamadas para a FirebaseUI.