A versão mais recente do Google Identity Toolkit foi lançada como Firebase Authentication. A partir de agora, o trabalho de recursos no Identity Toolkit será congelado, e todo o desenvolvimento de novos recursos será feito no Firebase Authentication. Recomendamos que os desenvolvedores do Identity Toolkit migrem para o Firebase Authentication assim que for possível para os aplicativos. No entanto, o Identity Toolkit continua funcionando e não será descontinuado sem um aviso.
Novos recursos
O Firebase Authentication já tem alguns recursos importantes em relação ao Google Identity Toolkit:
Acesso a todos os recursos do Firebase
O Firebase é uma plataforma móvel que ajuda a desenvolver apps de alta qualidade, ampliar sua base de usuários e lucrar mais. O Firebase é composto por recursos complementares que podem ser combinados para atender às suas necessidades e inclui infraestrutura para: análise, mensagens em nuvem, banco de dados em tempo real, armazenamento de arquivos, hospedagem estática, configuração remota, relatório de falhas e testes para dispositivos móveis.
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, que melhorou significativamente a conversão de login e inscrição para os apps participantes. Ele também oferece suporte a modificações fáceis de temas para corresponder ao seu aplicativo e, para a máxima personalização, as versões do Android e do iOS foram disponibilizadas como código aberto.
Configuração simplificada do servidor
Facilitamos o uso do Firebase Authentication para desenvolvedores. Com o Kit de ferramentas de identidade, notamos que muitos desenvolvedores optaram por não implementar o fluxo de recuperação de e-mail, o que impossibilitou que os usuários recuperassem as contas caso esquecessem 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 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.
Novo Admin Console
O Firebase tem um novo console do desenvolvedor, e a seção "Autenticação" permite que você visualize, modifique e exclua seus usuários. Isso pode ser muito útil para depurar seus fluxos de login e inscrição. O console também permite configurar métodos de autenticação e personalizar modelos de e-mail.
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 fazer login e registrar usuários antigos e novos, acessar propriedades de usuários, vincular, atualizar e excluir contas, redefinir senhas e muito mais sem estar vinculados a uma interface fixa. Se preferir, crie manualmente seu próprio fluxo de login e experiência usando essa 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 Firebase Auth usa um serviço de back-end que recebe 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, desativando o acesso até que o usuário se autentique 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ônimo. O login anônimo pode ser usado para criar um ID de usuário exclusivo sem exigir que o usuário passe por nenhum processo de login ou inscrição. Com um usuário anônimo, agora é possível fazer chamadas de API autenticadas, como 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 é ótimo para situações como um carrinho de compras do lado do servidor ou qualquer aplicativo em que você queira envolver o usuário antes de enviar para um fluxo de inscrição.
Diferenças de recursos
No momento, alguns recursos do Identity Toolkit não estão disponíveis no Firebase Authentication, 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 seu 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 Firebase Authentication ao seu serviço mudaram.
Provedores de identidade
O PayPal e a AOL não são compatíveis. Os usuários com contas desses IDPs ainda podem fazer login no seu app com o fluxo de recuperação de senha e configurar uma senha para a conta.
Bibliotecas do servidor
Atualmente, há SDKs Admin do Firebase disponíveis para Java, Node.js, Python, Go e C#.
E-mails de gerenciamento de contas
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 do Firebase oferecem apenas uma personalização limitada.
Confirmação da mudança de endereço de e-mail
No Identity Toolkit, quando um usuário decide mudar o endereço de e-mail, um e-mail é enviado para o novo endereço com um link para continuar o fluxo de mudança de endereço de e-mail.
O Firebase confirma a mudança 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 mudança.
Lançamento do IdP
O Identity Toolkit tinha a capacidade de adicionar provedores de identidade ao seu sistema de login gradualmente, para que você pudesse testar o impacto nas suas solicitações de suporte. Esse 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 da Firebase Authentication
No Firebase Authentication, a funcionalidade fornecida pela API REST do Identity Toolkit foi empacotada em SDKs de cliente 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.
FirebaseUI Auth
Todos os fluxos da interface que gerenciam login, inscrição, recuperação de senha e vinculação de conta foram recriados usando os SDKs do Firebase Authentication. Eles estão disponíveis como SDKs de código aberto para iOS e Android, permitindo 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 Firebase Authentication, as sessões atuais dos usuários serão encerradas após a atualização do SDK, e eles vão precisar fazer login novamente.
Antes de começar
Antes de migrar do Identity Toolkit para o Firebase Authentication, é necessário:
Abra o console do Firebase, clique em Importar projeto do Google e selecione o projeto do Identity Toolkit.
Clique em settings > Permissões para abrir a página "IAM e administrador".
Abra a Contas de serviço. Aqui você pode conferir a conta de serviço que configurou anteriormente para o Identity Toolkit.
Ao lado da conta de serviço, clique em more_vert > 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 é feito o download. Ele será necessário para inicializar o SDK na próxima etapa.
Volte para o console do Firebase. Na seção "Auth", abra a página Modelos de e-mail. Nesta página, personalize os modelos de e-mail do seu app.
No Identity Toolkit, quando os usuários redefiniam senhas, mudaram de endereço de e-mail e 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 Firebase envia e-mails com base nos modelos que você configura sem requerer outras ações.
Opcional: se você precisar acessar os serviços do Firebase no servidor, instale o SDK do Firebase.
É possível instalar o módulo Node.js do Firebase com
npm
:$ npm init $ npm install --save firebase-admin
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, siga as etapas de migração para a plataforma do app: Android, iOS e Web.
Servidores e JavaScript
Mudanças importantes
Há várias outras diferenças na implementação da Web do Firebase do Identity Toolkit.
Gerenciamento de sessões da Web
Anteriormente, quando um usuário se autenticava usando o widget do Identity Toolkit, um cookie era definido para o usuário e usado para inicializar 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 do cliente do Firebase agora gerenciam tokens de ID do Firebase e funcionam com o back-end do Firebase Authentication para manter a sessão atualizada. O back-end expira sessões quando ocorrem mudanças importantes na conta, como alterações na senha do usuário. Os tokens de ID do Firebase não são definidos automaticamente como cookies no cliente da Web e têm apenas uma hora de vida útil. A menos que você queira sessões de apenas uma hora, os tokens de ID do Firebase não são adequados para ser usados como o cookie para validar todas as solicitações de página. Em vez disso, você precisa configurar um listener para quando o usuário fizer login, pegar o token de ID do Firebase, validar o token e criar seu próprio cookie pelo sistema de gerenciamento de cookies do framework.
Você vai precisar definir a duração da sessão do cookie com base nas 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 Firebase Auth agora começa com uma lista de métodos de login, incluindo uma opção de e-mail que vai paraaccountchooser.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 do Firebase. Isso vai facilitar o suporte a usuários anônimos, usuários de autenticação personalizada ou usuários de provedores em que os endereços de e-mail não são obrigatórios.Widget de gerenciamento de contas
Esse widget oferece uma interface para que os usuários mudem endereços de e-mail, alterem a senha ou desvinculem as contas dos provedores de identidade. Ele está 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.Nenhum oobActionUrl
O envio de e-mails agora é processado pelo Firebase e configurado no console do Firebase.
Personalização de CSS
O FirebaseUI usa o estilo do Material Design Lite, que adiciona animações do Material Design de forma dinâmica.
Etapa 1: mudar o código do servidor
Se o servidor depender do token do Identity Toolkit (válido por duas semanas) para gerenciar sessões de usuários da Web, será necessário converter o servidor para usar o próprio cookie de sessão.
- Implemente um endpoint para validar o token de ID do Firebase e definir o cookie de sessão para o usuário. O app cliente envia o token de ID do Firebase para esse endpoint.
- Se a solicitação recebida contiver seu próprio cookie de sessão, considere o usuário autenticado. Caso contrário, trate a solicitação como não autenticada.
- Se você não quiser que nenhum dos seus usuários perca as sessões de login atuais, aguarde duas semanas para que todos os tokens do Identity Toolkit venham a expirar ou faça a validação de token duplo para seu aplicativo da Web conforme descrito abaixo na etapa 3.
Em seguida, como os tokens do Firebase são diferentes dos tokens do Identity Toolkit, é necessário atualizar a lógica de validação de token. Instale o SDK do Firebase Server no seu servidor. Se você usar uma linguagem que não tem suporte pelo SDK do Firebase Server, faça o download de uma biblioteca de validação de token JWT para seu ambiente e valide o token corretamente.
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 vão precisar 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 Identity Toolkit 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 Firebase. Portanto, só é necessário usar os métodos de verificação de token do Firebase.
Consulte a Referência da API Web do Firebase.
Etapa 2: atualize o HTML
Adicione o código de inicialização do Firebase ao app:
- Abra seu projeto no Console do Firebase.
- Na página "Visão geral", clique em Adicionar app e em Adicionar o Firebase ao seu app da Web. Um snippet de código que inicializa o Firebase será exibido.
- Copie e cole o snippet de inicialização na sua página da Web.
Adicione a FirebaseUI Auth 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>
Remova o SDK do Identity Toolkit do app.
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:
Depois de fazer login no Firebase, receba um token de ID do Firebase chamando
firebase.auth().currentUser.getToken()
.Envie o token de ID do Firebase 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ê precisa oferecer mais proteção contra falsificação de solicitações entre sites (CSRF, na sigla em inglês).
Se o framework não oferecer proteção contra CSRF, uma maneira de evitar um ataque seria receber um token de ID do Firebase 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. Em seguida, você vai validar esse token usando o SDK do servidor do Firebase, além da verificação do cookie de sessão, que foi concluída pelo framework de back-end. Isso vai dificultar as chances de sucesso de ataques CSRF, já que o token de ID do Firebase só é armazenado usando armazenamento na Web e nunca em um cookie.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
No console do Firebase, abra a seção "Autenticação" e clique na guia Método de login.
Para cada provedor de login federado compatível, faça o seguinte:
- Clique no nome do provedor de login.
- Copie o URI de redirecionamento OAuth.
- No console do desenvolvedor do provedor de login, atualize o URI de redirecionamento do OAuth.
Android
Etapa 1: adicionar o Firebase ao app
Abra o console do Firebase e selecione o projeto do Identity Toolkit que você já importou.
Na página "Visão geral", clique em Adicionar app e em Adicionar o Firebase ao seu app Android. Na caixa de diálogo "Adicionar o Firebase", informe 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.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.
No arquivo
build.gradle
do projeto (<var>your-project</var>/build.gradle
), especifique o nome do pacote do app na seçãodefaultConfig
:defaultConfig { ….. applicationId "com.your-app" }
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' } }
No arquivo
build.gradle
do app (<var>my-project</var>/<var>app-module</var>/build.gradle
), adicione a linha abaixo à parte de baixo 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.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.1.0' compile 'com.google.android.gms:play-services-auth:21.3.0'
Etapa 2: remover o SDK do Identity Toolkit
- Remova a configuração do Identity Toolkit do arquivo
AndroidManifest.xml
. Essas informações são incluídas no arquivogoogle-service.json
e carregadas pelo plug-in google-services. - Remova o SDK do Identity Toolkit do app.
Etapa 3: adicionar a FirebaseUI ao app
Adicione a FirebaseUI Auth ao seu app.
No app, substitua as chamadas para o SDK do Identity Toolkit por chamadas para o FirebaseUI.
iOS
Etapa 1: adicionar o Firebase ao app
Para adicionar o SDK do Firebase ao app, execute os seguintes comandos:
$ cd your-project directory $ pod init $ pod 'Firebase'
Abra o console do Firebase e selecione o projeto do Identity Toolkit que você já importou.
Na página "Visão geral", clique em Adicionar app e em Adicionar o Firebase ao seu app iOS. Na caixa de diálogo "Adicionar o Firebase", informe o ID do pacote e o ID da App Store do 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 arquivoGoogleService-Info.plist
.Copie o arquivo de configuração para a raiz do projeto Xcode e adicione a todos os destinos.
Etapa 2: remover o SDK do Identity Toolkit
- Remova
GoogleIdentityToolkit
do Podfile do app. - Execute o comando
pod install
.
Etapa 3: adicionar a FirebaseUI ao app
Adicione a FirebaseUI Auth ao seu app.
No app, substitua as chamadas para o SDK do Identity Toolkit por chamadas para o FirebaseUI.