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. Incentivamos os desenvolvedores do Identity Toolkit a migrar para nessas plataformas assim que for possível para seus aplicativos.

Novos recursos

O Identity Platform já tem melhorias significativas nos recursos Kit de ferramentas de identidade do Google:

  • Novo Admin Console

    O Identity Platform tem novo console para desenvolvedores que permite visualizar, modificar e excluir seus usuários; isso pode ser útil 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 empresariais, como SAML e OIDC, que permite escalonar apps e serviços SaaS. O Identity Platform também oferece suporte para provedores como GitHub, Microsoft, Yahoo e muito mais. Você pode 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 decidir criar uma conta, todas as atividades serão preservadas com o mesmo ID do 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.

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

    O Identity Platform foi criado com base 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 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

    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 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.

  • 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 Identity Platform 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.

Diferenças de atributos

Alguns recursos do Identity Toolkit não estão disponíveis no Identity Platform, enquanto outros recursos foram reformulados e funcionam 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. No entanto, alguns recursos e a maneira como você integra o Identity Platform 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, há SDKs Admin 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. 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 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 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. 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.

  • Widget da interface

    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 cliente e empacotada 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 A plataforma, as prioridades 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 Identity Platform, precisa:

  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 é 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 Cloud. Na seção "Provedores", em "E-mail/senha" método de login, abra a página Modelos de e-mail. Depois, é possível personalizar de modelos.

    No Identity Toolkit, quando usuários redefinem senhas, alteram endereços de e-mail ou verificou os endereços de e-mail, era necessário obter um código OOB da Identity Toolkit e envie 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 do Firebase, 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, 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 Identity Platform 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 usado para inicialize 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.

    Agora os SDKs do cliente do Identity Platform gerenciam Tokens de ID e trabalhar 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ê É preciso configurar um listener. para quando o usuário fizer login, acessar o token de ID, 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. Identity Platform 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 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 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 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: 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 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 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 Identity Platform e, portanto, você só precisa usar o token de ID métodos de verificação.

Consulte a Referência da API 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. Adicionar 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 o gerenciamento de sessões, precisa fazer as seguintes alterações no lado do cliente:

    1. Depois de fazer login com o 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 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 ataque seria conseguir um token de ID para o usuário 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 Admin, além da verificação de cookies de sessão, que o framework de back-end concluiu. Isso vai dificultar CSRF tenha êxito, 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 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 Cloud, abra a página Providers (Provedores). nesta seção.

  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 Identity Platform ao app com o Firebase

  1. Abra o Console do Cloud selecione seu 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 "Adicionar Firebase", insira o nome do pacote e a assinatura do seu app impressão digital do certificado e clique em Adicionar app. O google-services.json do arquivo de configuração é baixado para seu 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 a seguir após o Plug-in do Android para Gradle para ativar 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. 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 cliente ao seu app executando 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 Firebase", informe o nome do pacote do app, a impressão digital do certificado de assinatura e Clique em Adicionar app. O arquivo de configuração google-services.json é transferidos por download para seu computador. Na caixa de diálogo "Adicionar Firebase", insira o do pacote e da App Store e clique em Adicionar app. O arquivo de configuração GoogleService-Info.plist é baixado para o 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