Migrar do Google Identity Toolkit para o Firebase Authentication

A versão mais recente do Google Identity Toolkit foi lançada como Firebase Authentication: De agora em diante, os recursos do Identity Toolkit serão congelados e todos os novos o desenvolvimento de recursos será feito no Firebase Authentication. Incentivamos Os desenvolvedores do Identity Toolkit devem migrar para o Firebase Authentication assim que possível práticas para suas aplicações; No entanto, o Identity Toolkit continua funcionando e não será descontinuado sem um anúncio posterior.

Novos recursos

O Firebase Authentication já tem algumas melhorias significativas de recursos em relação Kit de ferramentas de identidade do Google:

  • Acesso a todo o Firebase

    O Firebase é uma plataforma móvel que ajuda você a desenvolver rapidamente aplicativos aumentar sua base de usuários e ganhar mais dinheiro. O Firebase é composto de recursos complementares que você pode combinar para atender às suas necessidades e inclui infraestrutura para: análise para dispositivos móveis mensagens na nuvem, Realtime Database, armazenamento de arquivos, hospedagem estática, configuração remota, relatórios de erros para dispositivos móveis e Testes do Android.

  • IUs atualizadas

    Reconstruímos completamente os fluxos de interface com base na experiência de UX mais recente do Google. pesquisa. Isso inclui recuperação de senha, vinculação de contas, contas novas/existentes de desambiguação de conta que costuma levar um tempo significativo para codificar e depuração. Ele integra o Smart Lock para senhas. no Android, o que melhorou significativamente as conversões de login para os apps participantes. Ele também oferece suporte a modificações fáceis de tema para combinar com seu aplicativo e, por personalização máxima, o recurso do Android e iOS de código aberto.

  • Configuração simplificada do servidor

    Facilitamos o uso do Firebase Authentication para os desenvolvedores. Com Identity Toolkit, vimos que muitos desenvolvedores optaram por não implementar a que impossibilitou a recuperação dos usuários nas contas deles caso esqueçam a senha. O Firebase Authentication pode enviar mensagens de verificação de e-mail, redefinição de senha e alteração de senha para o usuário e o texto podem ser facilmente personalizados para seus usuários. Além disso, não é mais necessário hospedar Widgets da IU para hospedar redirecionamentos e de concluir operações de alteração de senha.

  • Novo Admin Console

    O Firebase tem um novo console para desenvolvedores e a seção "Autenticação" permite visualizar, modificar e excluir suas usuários. Isso pode ser uma grande ajuda para depurar seus fluxos de login e inscrição. O console também permite que você configure métodos de autenticação e personalizar modelos de e-mail.

  • Novos SDKs

    Todas as APIs de servidor do Identity Toolkit agora estão disponíveis nativamente com cada das nossas bibliotecas de cliente (Android, iOS, Web). Os desenvolvedores poderão assinar e inscrever usuários novos e antigos, acessar propriedades do usuário, vincular, atualizar e exclua contas, redefina senhas e muito mais sem ficar vinculado a uma interface fixa. Se preferir, você pode criar manualmente todo seu fluxo de login e com essa API.

  • Gerenciamento de sessões em apps para dispositivos móveis

    Com o Identity Toolkit, os aplicativos criam o próprio estado da sessão com base na evento de autenticação inicial do Identity Toolkit. O Firebase Auth usa uma serviço de back-end que recebe um token de atualização, criado a partir da autenticação evento, e o troca por tokens de acesso com duração de uma hora para Android, iOS e JavaScript. Quando um usuário altera a senha, os tokens de atualização não poderão gerar novos tokens de acesso, desabilitando assim o acesso o usuário fizer a autenticação novamente nesse dispositivo.

  • Autenticação anônima e do GitHub

    O Firebase Authentication oferece suporte a dois novos tipos de autenticação: GitHub e anônimos. O login anônimo pode ser usado para criar um ID de usuário único sem exigir que o usuário passe por qualquer processo de login ou inscrição. Com um usuário anônimo, agora é possível fazer chamadas de API autenticadas, como faria com um usuário comum. Quando o usuário decide se inscrever em uma conta, todos atividade é preservada com o mesmo ID do usuário. Isso é ótimo para situações como um carrinho de compras do lado do servidor ou qualquer aplicativo em que o usuário antes de enviá-lo pelo fluxo de inscrição.

Diferenças de atributos

Alguns recursos do Identity Toolkit não estão disponíveis no Firebase no momento A autenticação, embora outros recursos tenham sido reformulados e funcionem de forma diferente. Você pode optar por não migrar imediatamente se esses recursos forem importantes para seu app. Em muitos casos, esses recursos podem não ser importantes para o app ou poderá haver substituições fáceis que permitirão que você prossiga com a migração.

Diferenças no servidor

O serviço principal do Identity Toolkit com as APIs REST subjacentes, conta lógica de validação e o banco de dados primário do usuário passaram por poucas atualizações. Mas alguns recursos e a maneira como você integra o Firebase Authentication para seu serviço mudou.

  • Provedores de identidade

    O PayPal e a AOL não são compatíveis. Usuários com contas desses IdPs ainda poderão acessar seu aplicativo com o fluxo de recuperação de senha e definir uma senha para sua conta.

  • Bibliotecas de servidor

    No momento, existem SDKs de administrador do Firebase. disponível para Java, Node.js, Python, Go e C#.

  • E-mails de gerenciamento da conta

    Redefinição de senha, verificação de e-mail e mensagens de alteração de e-mail podem ser executada pelo Firebase ou pela próprio servidor de e-mail. Atualmente, os modelos de e-mail do Firebase oferecem apenas e personalização.

  • 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, envia um e-mail para o novo endereço que tem um link para continuar a mensagem ao fluxo de alteração de endereço.

    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 provedores de identidade ao seu login gradualmente, para testar o impacto no seu solicitações de suporte. Este recurso foi removido do Firebase Authentication.

Diferenças no lado do cliente

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

  • SDKs do Firebase Authentication

    No Firebase Authentication, a funcionalidade fornecida pelo SDK do Identity Toolkit A API REST foi empacotada em SDKs clientes disponíveis para Android, iOS e JavaScript. Você pode usar o SDK para fazer login e inscrever usuários. acessar usuário Informações do perfil vincular, atualizar e excluir contas; e redefinir senhas usar o SDK do cliente em vez de se comunicar com o serviço de back-end via chamadas REST.

  • Autenticação da FirebaseUI

    Todos os fluxos de interface que gerenciam o login, a inscrição, a recuperação de senha a vinculação de contas foi recriada com os SDKs do Frebase Authentication. Eles estão disponíveis como SDKs de código aberto para iOS e Android para que você possa personalizar completamente os fluxos de maneiras que não são possíveis com o Identity Toolkit.

Outras diferenças incluem:

  • Sessões e migração

    Como as sessões são gerenciadas de maneira diferente no Identity Toolkit e no Firebase A autenticação, as credenciais as sessões atuais serão encerradas atualizar o SDK, e os usuários precisarão fazer login novamente.

Antes de começar

Antes de migrar do Identity Toolkit para o Firebase Authentication, faça o seguinte: precisa

  1. Abra o Console do Firebase, clique em Importe o projeto do Google e selecione o projeto do Identity Toolkit.

  2. Clique em > Permissões para abrir o IAM e "Administrador".

  3. Abra a Contas de serviço. Aqui é possível conferir a conta de serviço configurado anteriormente para o Identity Toolkit.

  4. Ao lado da conta de serviço, clique em > Criar chave. Então, na Caixa de diálogo Criar chave privada, defina o tipo de chave como JSON e clique em Criar. Um arquivo JSON com as credenciais da conta de serviço baixado para você. Ele será necessário para inicializar o SDK na próxima etapa.

  5. Volte para o Console do Firebase. Na seção "Autenticação", abra a página Modelos de e-mail. Nesta página, personalizar os modelos de e-mail do seu app.

    No Identity Toolkit, quando usuários redefinem senhas, alteram endereços de e-mail e e-mails verificados, era necessário receber um código OOB da Identity Toolkit e envie o código aos usuários por e-mail. O Firebase envia e-mails com base nos modelos que você configura sem mais ações são necessárias.

  6. Opcional: se você precisar acessar os serviços do Firebase no seu servidor, instalar o SDK do Firebase.

    1. É possível instalar o módulo Node.js do Firebase com npm:

      $ npm init
      $ npm install --save firebase-admin
      
    2. No seu código, você pode 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, Web.

Servidores e JavaScript

Mudanças importantes

Há várias outras diferenças na implementação na Web de Firebase do Identity Toolkit.

  • Gerenciamento da sessão da Web

    Antes, quando um usuário autenticava usando o widget do Identity Toolkit, Um cookie foi definido para o usuário e foi usado para inicializar a sessão. Esse cookie teve uma duração de duas semanas e foi usado para permitir que o usuário utilize no widget de gerenciamento de conta para alterar a senha e o endereço de e-mail. Algumas sites usaram esse cookie para autenticar todas as outras solicitações de página no site. Outros sites usaram o cookie para criar seus próprios cookies por meio da no sistema de gerenciamento de cookies do framework.

    Os SDKs do cliente do Firebase agora gerenciam os tokens de ID do Firebase e trabalhar com o back-end do Firebase Authentication para manter a sessão atualizada. O back-end expira as sessões quando uma conta importante é alterada (como as alterações de senha) foram realizadas. Os tokens de ID do Firebase não são automaticamente definidos como cookies no cliente da Web e têm duração de apenas uma hora. A menos que você quiser sessões de apenas uma hora, os tokens de ID do Firebase não são apropriados para serem usado como o cookie para validar todas as solicitações de sua página. Em vez disso, você É preciso configurar um listener. para quando o usuário fizer login, acessar o token de ID do Firebase, valide o token e crie o seu próprio cookie por meio do sistema de gerenciamento de cookies do seu framework.

    Você precisará definir a duração da sessão do seu cookie com base no necessidades de segurança do seu aplicativo.

  • Fluxo de login na Web

    Anteriormente, os usuários eram redirecionados para accountchooser.com durante o login iniciado para saber qual identificador o usuário queria usar. Firebase Auth O fluxo da interface agora começa com uma lista de métodos de login, que inclui um e-mail que vai para accountchooser.com para Web e usa o API hintRequest em Android Além disso, os endereços de e-mail não são mais necessários no console do de ML pela UI. Isso vai facilitar o suporte a usuários anônimos e usuários com autenticação personalizada ou usuários de provedores que não exigem endereços de e-mail.

  • Widget de gerenciamento de conta

    Este widget fornece uma interface de usuário para os usuários alterarem endereços de e-mail, alterarem ou desvincular as contas dos provedores de identidade. No momento, 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.

  • Sem signOutUrl

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

  • Sem oobActionUrl

    O envio de e-mails agora é gerenciado pelo Firebase e configurado no Firebase no console do Google Cloud.

  • Personalização de CSS

    A FirebaseUI usa o estilo do Material Design Lite, que adiciona dinamicamente animações do 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, é necessário converter o servidor para usar a própria cookie de sessão.

    1. Implemente um endpoint para validar o token de ID do Firebase. e definindo o cookie de sessão para o usuário. O app cliente envia o Token de ID do Firebase para este endpoint.
    2. Se a solicitação recebida tiver seu próprio cookie de sessão, será possível considerar o usuário autenticado. Caso contrário, trate a solicitação como não autenticado.
    3. Se você não quiser que nenhum dos seus usuários perca o acesso atual você deve aguardar duas semanas para que todos os tokens do Identity Toolkit ou faça a validação de dois tokens para seu aplicativo da Web conforme descrito abaixo na etapa 3.
  2. Em seguida, como os tokens do Firebase são diferentes do Identity Toolkit é necessário atualizar a lógica de validação do token. Instale o SDK do servidor do Firebase no seu servidor. ou, se você usa um sem suporte ao SDK do servidor do Firebase, faça o download de uma biblioteca de validação de token JWT para seu ambiente e valide o token corretamente.

  3. Quando você fizer as atualizações acima pela primeira vez, ainda poderá ter caminhos de código que dependem dos tokens do Identity Toolkit. Se você tiver aplicativos iOS ou Android, os usuários precisarão atualizar para a nova versão do aplicativo para ter para que os novos caminhos de código funcionem. Se você não quiser forçar os usuários a atualizar seu app, é possível adicionar lógica de validação do servidor que examine o e determina se é necessário usar o SDK do Firebase ou o SDK do Identity Toolkit para validar o token. Se você tiver apenas um servidor todas as novas solicitações de autenticação serão movidas o Firebase e, portanto, você só precisa usar o token do Firebase métodos de verificação.

Consulte a Referência da API Firebase Web.

Etapa 2: atualizar o HTML

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

    1. Abra seu projeto no Console do Firebase.
    2. Na página "Visão geral", clique em Adicionar app e Adicionar o Firebase ao app da Web. Um snippet de código que inicializa o Firebase é exibido.
    3. Copie e cole o snippet de inicialização na sua página da Web.
  2. Adicione a autenticação da FirebaseUI. ao seu 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. Remova o SDK do Identity Toolkit do seu app.

  4. Se você usou o token de ID do Identity Toolkit para o gerenciamento de sessões, precisa fazer as seguintes alterações no lado do cliente:

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

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

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

      Se sua estrutura não fornece proteção CSRF, uma forma de evitar um ataque seria conseguir um token de ID do Firebase para o usuário conectado com getToken() e incluir o token com cada solicitação (a sessão também será enviado por padrão). Depois, você precisa validar esse token usando o SDK do servidor do Firebase, além da verificação de cookie de sessão, que o framework de back-end concluiu. Isso vai dificultar ter sucesso, já que o token de ID do Firebase só é armazenado usando armazenamento na Web e nunca em um cookie.

    3. Os tokens do Identity Toolkit são válidos por duas semanas. Talvez você queira continuar emitindo tokens nas últimas duas semanas ou mais longa ou mais curta com base nos requisitos de segurança do seu app. Quando um usuário sair, limpe o cookie da sessão.

Etapa 3: atualizar os URLs de redirecionamento do IdP

  1. No console do Firebase, abra a seção "Autenticação" e clique no Guia Método de login.

  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 do OAuth.
    3. No console para desenvolvedores do provedor de login, atualize o redirecionamento do OAuth. URI.

Android

Etapa 1: adicionar o Firebase ao app

  1. Abra o Console do Firebase. selecione o projeto do Identity Toolkit que você já importou.

  2. Na página "Visão geral", clique em Adicionar app e Adicionar Firebase ao seu app Android. Na caixa de diálogo "Adicionar Firebase", insira o pacote do app nome e impressão digital do certificado de assinatura e clique em Adicionar app. A O arquivo de configuração google-services.json é transferido por download computador.

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

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

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. Ainda no arquivo build.gradle do projeto, adicione uma dependência para incluir plug-in google-services:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. No arquivo build.gradle do app no nível do app (<var>my-project</var>/<var>app-module</var>/build.gradle), adicione o linha seguinte na parte inferior para ativar o plug-in google-services:

    // Add to the bottom of the file
    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. Ainda no arquivo build.gradle do app, adicione o Firebase Authentication dependência:

    compile 'com.google.firebase:firebase-auth:23.0.0'
    compile 'com.google.android.gms:play-services-auth:21.2.0'
    

Etapa 2: remover o SDK do Identity Toolkit

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

Etapa 3: adicionar a FirebaseUI ao seu app

  1. Adicione a autenticação da FirebaseUI. ao seu app.

  2. No seu app, substitua as chamadas para o SDK do Identity Toolkit por chamadas para FirebaseUI

iOS

Etapa 1: adicionar o Firebase ao app

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

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Abra o Console do Firebase. selecione o projeto do Identity Toolkit que você já importou.

  3. Na página "Visão geral", clique em Adicionar app e Adicionar Firebase ao seu app iOS. Na caixa de diálogo "Adicionar Firebase", insira o ID do pacote do seu app e ID da App Store e clique em Adicionar aplicativo. A O arquivo de configuração GoogleService-Info.plist é transferido por download computador. Se você tiver vários IDs de pacotes no seu projeto, cada ID de pacote precisa estar conectado ao console do Firebase para ter a própria GoogleService-Info.plist.

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

Etapa 2: remover o SDK do Identity Toolkit

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

Etapa 3: adicionar a FirebaseUI ao seu app

  1. Adicione a autenticação da FirebaseUI. ao seu app.

  2. No seu app, substitua as chamadas para o SDK do Identity Toolkit por chamadas para FirebaseUI