Migrar do Google Identity Toolkit para a Identity Platform do Google Cloud

A versão mais recente do Google Identity Toolkit foi lançada como Identity Platform e Firebase Authentication. De agora em diante, os recursos do Identity Toolkit serão congelados. tudo novo o desenvolvimento de recursos será feito no Identity Platform e no Firebase Autenticação. Recomendamos que os desenvolvedores do Identity Toolkit migrem para essas plataformas assim que possível para os aplicativos.

Novos recursos

O Identity Platform já tem recursos aprimorados em relação ao Google Identity Toolkit:

  • Novo Admin Console

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

  • Novos métodos de autenticação

    O Identity Platform oferece suporte a padrões de federação empresarial, como SAML e OIDC, permitindo que você dimensione 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 exclusivo sem exigir que o usuário passe por nenhum processo de login ou inscrição. Isso permite fazer chamadas de API autenticadas como faria com um usuário normal. Quando o usuário decide se inscrever em uma conta, toda a atividade é preservada com o mesmo ID de usuário. Isso é útil em cenários como compras pelo servidor carrinhos de compras ou outros aplicativos com os quais você deseja envolver o usuário antes de enviar por meio de um fluxo de inscrição.

  • Escalabilidade com confiança com contratos de nível de serviço e suporte em nuvem

    O Identity Platform foi criado na infraestrutura confiável do Google e oferece contratos de nível de serviço e suporte do Google Cloud. Isso significa que é possível escalonar o serviço confiança e confiar no Google para fornecer a resiliência, a disponibilidade e a escalonabilidade de que você precisa.

  • Acesso a todos os recursos do 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.

  • Interfaces atualizadas

    Recriamos completamente os fluxos de interface com base na pesquisa de UX mais recente do Google. Isso inclui recuperação de senha, vinculação de contas, fluxos de disambiguação de contas novas/existentes que geralmente levam muito tempo para codificação 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

    Com o 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 Identity Platform 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 pode ser facilmente personalizado para seus usuários. Além disso, não é mais necessário hospedar os widgets da interface para hospedar redirecionamentos e concluir operações de mudança de senha.

  • Novos SDKs

    Todas as APIs do servidor do Identity Toolkit agora estão disponíveis de forma nativa com cada uma 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 seu próprio fluxo de login e experiência em cima desta API.

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

    Com o Identity Toolkit, os apps criavam 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 recebe um token de atualização, criado 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, desativando o acesso até que o usuário se autentique novamente nesse dispositivo.

Diferenças de atributos

Alguns recursos do Identity Toolkit não estão disponíveis no Identity Platform, enquanto outros foram redesenhados e funcionam de maneira 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 pode haver substitutos fáceis que permitem continuar a migração.

Diferenças do lado do servidor

O serviço principal do Identity Toolkit com as APIs REST, a lógica de validação da conta e o banco de dados do usuário principal passaram por poucas atualizações. No entanto, alguns recursos e a maneira como você integra o Identity Platform no 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 do servidor

    No momento, há SDKs Admin disponível 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 mudança de e-mail podem ser realizadas pelo Firebase ou pelo próprio servidor de e-mail do desenvolvedor. No momento, os modelos de e-mail oferecem apenas personalização na interface do usuário, mas pode ser ainda mais personalizado com as SDKs Admin

  • Confirmação da mudança de 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. Esse recurso foi removido do Firebase Authentication.

Diferenças no lado do cliente

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

  • SDKs do cliente e do servidor

    No Identity Platform, a funcionalidade fornecida pelo A API REST foi empacotada em SDKs clientes disponíveis para Android, iOS e JavaScript. É possível usar o SDK para fazer login e registrar 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 interface

    Todos os fluxos de interface que gerenciam login, inscrição, recuperação de senha e vinculação de conta foram recriados usando os SDKs do cliente e empacotados como um widget de login. Eles estão disponíveis como SDKs de código aberto para iOS, Android Web e permitem que você personalize 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 Identity Platform, as sessões atuais dos usuários serão encerradas após a atualização do SDK, e os usuários vão precisar fazer login novamente.

Antes de começar

Antes de migrar do Identity Toolkit para o Identity Platform, é necessário:

  1. Abra o console do Cloud e selecione seu do Identity Toolkit.

  2. No Marketplace, acesse Identity Platform (em inglês) e selecione "Ativar Identity Platform".

  3. Abra a Contas de serviço. Aqui você pode conferir a conta de serviço que 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 é baixado. Ele será necessário para inicializar o SDK na próxima etapa.

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

    No Identity Toolkit, quando os usuários redefiniam senhas, mudaram de endereço de e-mail ou verificaram os endereços de e-mail, era necessário receber um código OOB do servidor do Identity Toolkit e enviar o código aos usuários por e-mail. O Identity Platform envia e-mails com base nos modelos configurados sem mais ações são necessárias.

  6. Opcional: se você precisar acessar os serviços do Identity Platform no seu 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 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, Web.

Servidores e JavaScript

Mudanças importantes

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

  • Gerenciamento de sessões da Web

    Antes, quando um usuário autenticava usando o Widget do Identity Toolkit, um cookie foi definido para o usuário e usado para inicialize a sessão. Esse cookie tinha uma validade de duas semanas e era usado para permitir que o usuário usasse o widget de gerenciamento de contas para mudar a senha e o endereço de e-mail. Alguns sites usavam esse cookie para autenticar todas as outras solicitações de página no site. Outros sites usaram o cookie para criar os próprios cookies usando o sistema de gerenciamento de cookies do framework.

    Os SDKs de cliente do Identity Platform agora gerenciam tokens de ID e funcionam com o back-end do Identity Platform 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 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 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ê precisa configurar um listener para quando o usuário fizer login, pegar o token de ID, validar o token e criar seu próprio cookie pelo sistema de gerenciamento de cookies do 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 quando o login era iniciado para saber qual identificador o usuário queria usar. O fluxo da interface do Identity Platform agora 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 interface. 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 cartão do usuário não são mais fornecidos. Eles podem ser criados com muita facilidade usando a API Firebase Authentication.

  • Nenhuma signOutUrl

    Você vai precisar chamar firebase.auth.signOut() e processar o callback.

  • Sem oobActionUrl

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

  • Personalização de CSS

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

Etapa 1: mudar 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 Validar o token de ID 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 de ID são diferentes do Identity Toolkit é necessário atualizar a lógica de validação do token. Instale o SDK Admin ao seu servidor. ou, se você usar uma linguagem não compatível com o SDK Admin, faça o download de uma biblioteca de validação de token JWT para seu ambiente e de forma adequada validar o token.

  3. Quando você fizer as atualizações acima, ainda poderá ter caminhos de código que dependem de 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 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 Identity Toolkit para validar o token. Se você tiver apenas um servidor todas as novas solicitações de autenticação serão movidas Identity Platform e, portanto, você só precisa usar o token de ID métodos de verificação.

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. nos provedores clique em Detalhes da configuração do aplicativo. Um snippet de código que inicializa o Identity Platform.
    3. Copie e cole o snippet de inicialização na sua página da Web.
  2. Adicione o widget de autenticação 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 gerenciamento de sessão, faça as seguintes mudanças no lado do cliente:

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

    2. Envie o token de ID para o servidor de back-end, valide-o e emita seu próprio cookie de sessão.

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

      Se o framework não oferecer proteção contra CSRF, uma maneira de evitar um ataque seria receber um token de ID para o usuário conectado com getToken() e incluir o token em cada solicitação. O cookie de sessão também será enviado por padrão. Depois, você precisa validar esse token usando o SDK Admin, além da verificação de cookies da sessão, que o framework de back-end concluiu. Isso vai dificultar CSRF para ter sucesso, pois o token de ID 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 que duram duas semanas ou pode querer torná-los mais longos ou mais curtos com base nos requisitos de segurança do 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 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 do 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 e selecione o Android e em Primeiros passos no Firebase. Na caixa de diálogo "Add Firebase", informe o nome do pacote e a impressão digital do certificado de assinatura do app e clique em Add App. O arquivo de configuração google-services.json será transferido para o computador.

  3. Copie o arquivo de configuração para o diretório raiz do módulo do app Android. Esse arquivo de configuração contém 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 (<var>my-project</var>/<var>app-module</var>/build.gradle), adicione a linha a seguir após o plug-in do Gradle para Android 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: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 são incluídas no arquivo google-service.json e carregadas pelo plug-in google-services.
  2. Remova o SDK do Identity Toolkit do app.

Etapa 3: adicionar a FirebaseUI ao app

  1. Adicione a FirebaseUI Auth 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. Para adicionar o SDK do cliente ao app, execute os seguintes comandos:

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

  3. Na página "Provedores", clique em Detalhes da configuração do aplicativo e selecione a opção do iOS e clique em Primeiros passos no Firebase. Na caixa de diálogo "Adicionar o 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 para o computador. Na caixa de diálogo "Adicionar o Firebase", informe o ID do pacote e o ID da App Store do seu app e clique em Adicionar app. O arquivo de configuração GoogleService-Info.plist será transferido para o computador. Se o projeto tiver vários IDs de pacotes, cada um deles precisa ser conectado no Console do Firebase para ter o próprio arquivo GoogleService-Info.plist.

  4. Copie o arquivo de configuração para a raiz do projeto Xcode e adicione a todas as metas.

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 app

  1. Adicione a FirebaseUI Auth ao seu app.

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