Przejście z Google Identity Toolkit na Uwierzytelnianie Firebase

Najnowsza wersja pakietu Google Identity Toolkit została udostępniona jako Uwierzytelnianie Firebase. W przyszłości prace nad funkcjami w Identity Toolkit zostaną zablokowane i wszystkie nowe funkcje będą rozwijane w Uwierzytelnianiu Firebase. Zachęcamy deweloperzy Identity Toolkit, aby jak najszybciej przeszli na Uwierzytelnienie Firebase. praktyczny w swoich zastosowaniach; jednak Identity Toolkit nadal działa, i nie zostaną wycofane bez kolejnego powiadomienia.

Nowe funkcje

Uwierzytelnianie Firebase ma już kilka znaczących ulepszeń Zestaw narzędzi Google Identity:

  • Dostęp do wszystkich usług Firebase

    Firebase to platforma mobilna, która pomaga szybko tworzyć wysokiej jakości aplikacji, zwiększać grono użytkowników i zarabiać więcej. Firebase składa się z: dodatkowe funkcje, które można dowolnie łączyć i dopasowywać do swoich potrzeb obejmuje infrastrukturę do: statystyki dotyczące urządzeń mobilnych, wiadomości w chmurze, baza danych czasu rzeczywistego, przechowywanie plików, hosting statyczny, konfiguracja zdalna, zgłaszanie awarii oraz Testy Androida.

  • Zaktualizowane interfejsy użytkownika

    Całkowicie przebudowaliśmy przepływy interfejsu w oparciu o najnowszy UX Google badania. Obejmuje to odzyskiwanie hasła, łączenie kont, nowe/istniejące procedury ujednoznacznienia konta, których kodowanie często zajmuje dużo czasu; debugowanie. Integruje się z technologią Smart Lock na hasła na Androida, co znacznie zwiększyło liczbę logowania się i rejestracji w przypadku aplikacji uczestniczących w programie. Oferuje również możliwość łatwego modyfikowania motywu dostosowania do aplikacji oraz i możliwości dostosowania Android oraz iOS zostały udostępnione na licencji open source.

  • Uproszczona konfiguracja serwera

    Ułatwiliśmy deweloperom korzystanie z Uwierzytelniania Firebase. Na Zauważyliśmy, że wielu deweloperów nie wdraża proces odzyskiwania konta e-mail, który uniemożliwił użytkownikom przywrócenie konta do swoich kont, jeśli nie pamiętają hasła. Uwierzytelnianie Firebase wysyłanie wiadomości e-mail weryfikacyjnych, resetowania hasła i wiadomości o zmianie hasła na adres Można łatwo dostosować użytkownika i tekst. użytkowników. Nie musisz też już hostować widżety interfejsu do hostingu przekierowań. wykonywania operacji zmiany hasła.

  • Nowa konsola administracyjna

    Firebase ma nową konsolę programisty a w sekcji Uwierzytelnianie możesz wyświetlać, modyfikować i usuwać użytkowników. Może to być bardzo pomocne przy debugowaniu procesów logowania i rejestracji. Konsola umożliwia także skonfigurowanie metod uwierzytelniania dostosować szablony e-maili.

  • Nowe pakiety SDK

    Wszystkie interfejsy API serwera Identity Toolkit są teraz dostępne natywnie naszych bibliotek klienckich (Android, iOS, internet). Deweloperzy będą mogli podpisać nowych i starych użytkowników, dostęp do właściwości użytkownika, łączenie, aktualizowanie usuwanie kont, resetowanie haseł i wykonywanie innych czynności bez powiązania ze stałym interfejsem użytkownika. Jeśli wolisz, możesz ręcznie utworzyć własny proces logowania i w połączeniu z tym interfejsem API.

  • Zarządzanie sesjami w aplikacjach mobilnych

    Za pomocą Identity Toolkit aplikacje tworzyły własne stany sesji na podstawie początkowego zdarzenia uwierzytelniania z Identity Toolkit. Uwierzytelnianie Firebase używa usługa backendu, która pobiera token odświeżania pobierany z uwierzytelniania i wymienia je na godzinne tokeny dostępu dla Androida, iOS JavaScriptu. Gdy użytkownik zmieni hasło, tokeny odświeżania nie mogą już generować nowych tokenów dostępu, a to oznacza wyłączenie dostępu do czasu użytkownik ponownie uwierzytelnia się na tym urządzeniu.

  • Uwierzytelnianie anonimowe i GitHub

    Uwierzytelnianie Firebase obsługuje 2 nowe typy uwierzytelniania: GitHub i anonimowo. Anonimowe logowanie można wykorzystać do utworzenia unikalnego identyfikatora użytkownika bez wymaga od użytkownika przejścia dowolnego procesu logowania lub rejestracji. Za pomocą anonimowego użytkownika, możesz teraz wykonywać uwierzytelnione wywołania interfejsu API ze zwykłym użytkownikiem. Gdy użytkownik zdecyduje się założyć konto, aktywność jest zachowywana przy użyciu tego samego identyfikatora użytkownika. Przydaje się to w sytuacjach, np. koszyk na zakupy po stronie serwera lub dowolna aplikacja, w której chcesz użytkownika przed wysłaniem go przez proces rejestracji.

Różnice funkcji

Niektóre funkcje Identity Toolkit nie są obecnie dostępne w Firebase uwierzytelniania, podczas gdy inne funkcje zostały przeprojektowane i działają inaczej. Możesz zrezygnować z natychmiastowej migracji, jeśli te funkcje są ważne do aplikacji. W wielu przypadkach te funkcje mogą nie być ważne w przypadku Twojej aplikacji lub mogą wystąpić łatwe sytuacje zastępcze, które umożliwią kontynuowanie migracji.

Różnice po stronie serwera

Podstawowa usługa Identity Toolkit z bazowymi interfejsami API typu REST, kontem logikę weryfikacji i główną bazę danych użytkowników zostały jedynie nieznacznie zaktualizowane. Niektóre funkcje i sposób integracji uwierzytelniania Firebase do usługi Google Cloud.

  • Dostawcy tożsamości

    Usługi PayPal i AOL nie są obsługiwane. Użytkownicy z kont od tych dostawców tożsamości nadal będzie można logować się w Twojej aplikacji za pomocą i skonfigurować hasło do konta.

  • Biblioteki serwerów

    Obecnie dostępne są pakiety SDK Firebase dla administratorów. dostępne w językach Java, Node.js, Python, Go i C#.

  • E-maile do zarządzania kontem

    Wiadomości dotyczące resetowania hasła, weryfikowania adresu e-mail i zmiany adresu e-mail mogą być wykonywane przez Firebase lub przez dewelopera z własnym serwerem poczty. Obecnie szablony e-mail Firebase są dostępne tylko w ograniczonym zakresie i personalizacji reklam.

  • Potwierdzenie zmiany adresu e-mail

    Gdy użytkownik zdecyduje się zmienić adres e-mail w Identity Toolkit, wysyła e-mail na nowy adres, który zawiera link do kontynuowania tego e-maila w procesie zmiany adresu.

    Firebase potwierdza zmianę adresu e-mail, wysyłając na adres e-mail o wycofaniu zgody na adres stary adres e-mail z linkiem umożliwiającym cofnięcie zmiany.

  • Wdrażanie dostawcy tożsamości

    Identity Toolkit miał możliwość dodania dostawców tożsamości do Twojego logowania stopniowo je systematycznie, aby można było poeksperymentować z wpływem zapytań o pomoc. Ta funkcja została usunięta z Uwierzytelniania Firebase.

Różnice po stronie klienta

W Firebase funkcje udostępniane przez Google Identity Toolkit są podzielone na 2 grupy: komponenty:

  • Pakiety SDK Uwierzytelniania Firebase

    W Uwierzytelnianiu Firebase funkcja zapewniana przez Identity Toolkit Interfejs API REST został dodany do pakietów SDK klientów dostępnych na Androida, iOS JavaScriptu. możesz używać pakietu SDK do logowania się i rejestrowania użytkowników; użytkownik dostępu informacje o profilu; łączyć, aktualizować i usuwać konta; i resetować hasła. za pomocą pakietu SDK klienta, zamiast komunikować się z usługą backendu Wywołania REST.

  • Uwierzytelnianie FirebaseUI

    Wszystkie przepływy w interfejsie użytkownika do zarządzania logowaniem, rejestracją, odzyskiwaniem haseł funkcja łączenia kont została odbudowana za pomocą pakietów SDK uwierzytelniania Frebase. Są dostępne jako pakiety SDK typu open source na iOS i Androida, co pozwala na: całkowicie dostosować przepływy w sposób niemożliwy w Identity Toolkit.

Dodatkowe różnice:

  • Sesje i migracja

    Ponieważ sesjami zarządza się inaczej w Identity Toolkit i w Firebase Uwierzytelnianie użytkowników istniejące sesje zostaną zakończone po aktualizację pakietu SDK, a użytkownicy będą musieli ponownie się zalogować.

Zanim zaczniesz

Przed przejściem z Identity Toolkit na Uwierzytelnianie Firebase musisz musi

  1. Otwórz konsolę Firebase i kliknij Zaimportuj projekt Google i wybierz projekt Identity Toolkit.

  2. Kliknij > uprawnienia do otwierania Administracja Administracja.

  3. Otwórz Konta usługi. Tutaj możesz zobaczyć konto usługi, skonfigurowany wcześniej dla Identity Toolkit.

  4. Obok konta usługi kliknij Utwórz klucz. Następnie w Okno Utwórz klucz prywatny, ustaw typ klucza na JSON i kliknij Utwórz. Plik JSON zawierający dane logowania do konta usługi to pobrane filmy. Będzie Ci potrzebne do zainicjowania pakietu SDK w następnym kroku.

  5. Wróć do konsoli Firebase. W sekcji Uwierzytelnianie otwórz stronę Szablony e-maili. Na tej stronie dostosować szablony e-maili do aplikacji.

    W Identity Toolkit, gdy użytkownicy resetują hasła, zmieniają adresy e-mail na zweryfikowany adres e-mail, potrzebny był kod OOB serwera Identity Toolkit, a następnie wyślij kod użytkownikom e-mailem. Firebase wysyła e-maile na podstawie skonfigurowanych przez Ciebie szablonów bez wymagane dodatkowe działania.

  6. Opcjonalnie: jeśli chcesz uzyskać dostęp do usług Firebase na serwerze, zainstalować pakiet SDK Firebase.

    1. Moduł Firebase Node.js możesz zainstalować za pomocą npm:

      $ npm init
      $ npm install --save firebase-admin
      
    2. Dostęp do Firebase możesz uzyskać w kodzie za pomocą:

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

Następnie przeprowadź migrację dla odpowiedniej platformy aplikacji: Android, iOS, internet.

Serwery i JavaScript

Ważne zmiany

Istnieje wiele dodatkowych różnic w implementacji w Firebase z narzędzia Identity Toolkit.

  • Zarządzanie sesjami internetowymi

    Wcześniej, gdy użytkownik uwierzytelnił się za pomocą widżetu zestawu narzędzi tożsamości, dla użytkownika został ustawiony plik cookie, który posłużył do zatrzymania sesji. Ten plik cookie działał przez dwa tygodnie i pozwolił użytkownikowi użyć widżetu zarządzania kontem do zmiany hasła i adresu e-mail. Niektóre witryny używały tego pliku cookie do uwierzytelniania wszystkich pozostałych żądań stron w witrynie. Inne witryny używały tych plików cookie do tworzenia własnych plików cookie do zarządzania plikami cookie.

    Pakiety SDK klienta Firebase zarządzają tokenami identyfikatorów Firebase i współpracuj z backendem Uwierzytelniania Firebase, aby zapewnić aktualność sesji. Backend wygasa sesje po zmianie ważnych informacji na koncie (np. użytkownika hasła). Tokeny identyfikatorów Firebase nie są automatycznie ustawiane jako pliki cookie w kliencie internetowym, a ich czas trwania wynosi tylko godzinę. Chyba że: Jeśli chcesz, by sesja trwała tylko godzinę, tokeny identyfikatora Firebase nie powinny być używany jako plik cookie do weryfikowania wszystkich żądań stron. Zamiast tego Musisz skonfigurować detektor po zalogowaniu się użytkownika, pobierz token identyfikatora Firebase, zweryfikuj token i utwórz do własnych plików cookie za pomocą systemu zarządzania plikami cookie Twojej platformy.

    Musisz ustawić czas trwania sesji w pliku cookie na podstawie do bezpieczeństwa Twojej aplikacji.

  • Proces logowania w przeglądarce

    Wcześniej podczas logowania użytkownicy byli przekierowywani na stronę accountchooser.com zainicjowane w celu uzyskania informacji o identyfikatorze, którego chciał użyć użytkownik. Uwierzytelnianie Firebase Proces interfejsu użytkownika rozpoczyna się teraz od listy metod logowania, w tym adresu e-mail. która trafia do accountchooser.com w przypadku witryn i korzysta Interfejs hintRequest API został włączony na urządzeniu z Androidem. Dodatkowo adresy e-mail nie są już wymagane w Firebase Interfejs. Ułatwi to obsługę anonimowych użytkowników, niestandardowych użytkowników uwierzytelniania lub od dostawców, którzy nie potrzebują adresów e-mail.

  • Widżet zarządzania kontem

    Ten widżet zawiera interfejs użytkownika, w którym mogą zmieniać adresy e-mail, hasła pozwalają odłączyć ich konta od dostawców tożsamości. Obecnie jest w trakcie opracowywania.

  • Przycisk/widżet logowania

    Widżety, takie jak przycisk logowania i karta użytkownika, nie są już dostępne. Ta można łatwo utworzyć za pomocą interfejsu Firebase Authentication API.

  • Brak parametru signOutUrl

    Musisz zadzwonić pod numer firebase.auth.signOut() i przeprowadzić wywołanie zwrotne.

  • Brak elementu oobActionUrl

    Wysyłanie e-maili jest teraz obsługiwane przez Firebase i konfigurowane w Firebase konsoli.

  • Dostosowywanie CSS

    FirebaseUI wykorzystuje styl Material Design Lite, dynamicznie dodaje animacje Material Design.

Krok 1. Zmień kod serwera

  1. Jeśli Twój serwer korzysta z tokena Identity Toolkit (ważnego przez 2 tygodnie), do zarządzania sesjami użytkownika internetowego, musisz przekonwertować serwer tak, aby korzystał z własnych .

    1. Zaimplementuj punkt końcowy do weryfikacji tokena identyfikatora Firebase oraz plik cookie sesji użytkownika. Aplikacja kliencka wysyła Token identyfikatora Firebase dla tego punktu końcowego.
    2. Jeśli żądanie przychodzące zawiera Twój plik cookie sesji, możesz uznanie użytkownika za uwierzytelnione. W przeciwnym razie traktuj żądanie jako brak uwierzytelnienia.
    3. Jeśli nie chcesz, aby żaden z Twoich użytkowników utracił dostęp do zalogowanych użytkowników sesji, poczekaj 2 tygodnie na uzyskanie wszystkich tokenów Identity Toolkit wygaśnie, lub przeprowadź weryfikację przy użyciu 2 tokenów dla swojej aplikacji internetowej. jak opisano poniżej w kroku 3.
  2. Tokeny Firebase różnią się od Identity Toolkit musisz zaktualizować reguły ich weryfikacji. zainstalować na serwerze pakiet SDK serwera Firebase, lub, jeśli używasz język nieobsługiwany przez pakiet SDK serwera Firebase, pobierz bibliotekę walidacji tokena JWT. dla Twojego środowiska i prawidłowo zweryfikuj token.

  3. Przy pierwszym wprowadzeniu tych zmian możesz nadal mieć ścieżki kodu, korzystać z tokenów Identity Toolkit. Jeśli masz aplikacje na iOS lub Androida, użytkownicy będą musieli uaktualnić aplikację do nowej wersji, więc działają nowe ścieżki kodu. Jeśli nie chcesz wymuszać na użytkownikach aktualizacji Twojej aplikacji, możesz dodać dodatkowy mechanizm weryfikacji serwera, który sprawdza token i określa, czy musi używać pakietu SDK Firebase czy SDK Identity Toolkit w celu walidacji tokena. Jeśli masz tylko sieć wszystkie nowe żądania uwierzytelniania będą przenoszone do w Firebase, więc wystarczy użyć tylko tokena Firebase. metod weryfikacji.

Zobacz materiały referencyjne na temat interfejsu Firebase Web API.

Krok 2. Zaktualizuj kod HTML

  1. Dodaj kod inicjowania Firebase do swojej aplikacji:

    1. Otwórz projekt w konsoli Firebase.
    2. Na stronie Przegląd kliknij kolejno Dodaj aplikację i Dodaj Firebase do aplikacji internetowej. Wyświetli się fragment kodu, który inicjuje Firebase.
    3. Skopiuj fragment kodu inicjowania i wklej go na swojej stronie internetowej.
  2. Dodaj Uwierzytelnianie FirebaseUI. do aplikacji:

    <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. Usuń pakiet SDK Identity Toolkit z aplikacji.

  4. Jeśli do zarządzania sesjami używany był token identyfikatora pakietu tożsamości, musi wprowadzić te zmiany po stronie klienta:

    1. Po zalogowaniu się w Firebase uzyskaj token identyfikatora Firebase do Dzwonię pod firebase.auth().currentUser.getToken().

    2. Wyślij token identyfikatora Firebase do serwera backendu, zweryfikuj go i wyślij przez własny plik cookie sesji.

      Nie polegaj wyłącznie na pliku cookie sesji w przypadku lub wysyłania uwierzytelnionych żądań edycji do serwera. Ty będzie musiał podać dodatkowe sfałszowanie żądania z innej witryny (CSRF) i ochrony danych.

      Jeśli platforma nie zapewnia ochrony CSRF, jednym ze sposobów będzie to uzyskanie tokena identyfikatora Firebase dla zalogowanego użytkownika za pomocą getToken() i dołączaj token do każdego żądania (sesja jest też domyślnie wysyłany). Następnie należy zweryfikować token za pomocą pakietu SDK serwera Firebase oprócz sprawdzenia plików cookie sesji, które ukończone przez Twoją platformę backendu. Utrudni to Aby zakończyły się sukcesem ataków CSRF, token identyfikatora Firebase jest przechowywany tylko przy użyciu pamięci masowej, a nie w plikach cookie.

    3. Tokeny Identity Toolkit są ważne przez 2 tygodnie. Możesz że w ciągu ostatnich dwóch tygodni możesz też może być dłuższy lub krótszy w zależności od wymagań bezpieczeństwa aplikacji. Gdy użytkownik się wyloguje, wyczyść plik cookie sesji.

Krok 3. Zaktualizuj przekierowania dostawcy tożsamości

  1. W konsoli Firebase otwórz sekcję Uwierzytelnianie i kliknij Metoda logowania.

  2. W przypadku każdego obsługiwanego dostawcy logowania sfederowanego wykonaj te czynności:

    1. Kliknij nazwę dostawcy logowania.
    2. Skopiuj identyfikator URI przekierowania OAuth.
    3. Zaktualizuj przekierowanie OAuth w konsoli programisty dostawcy logowania Identyfikator URI.

Android

Krok 1. Dodaj Firebase do swojej aplikacji

  1. Otwórz konsolę Firebase. wybierz swój projekt Identity Toolkit, który został już zaimportowany.

  2. Na stronie Przegląd kliknij Dodaj aplikację, a następnie Dodaj Firebase do: w aplikacji na Androida. W oknie Dodaj Firebase podaj pakiet aplikacji nazwę i odcisk cyfrowy certyfikatu podpisywania, a następnie kliknij Dodaj aplikację. Plik konfiguracyjny google-services.json zostanie pobrany na komputera.

  3. Skopiuj plik konfiguracji do katalogu głównego modułu swojej aplikacji na Androida. Ten plik konfiguracji zawiera informacje o projekcie i kliencie OAuth Google.

  4. W pliku build.gradle na poziomie projektu (<var>your-project</var>/build.gradle), podaj nazwę pakietu aplikacji w sekcję defaultConfig:

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. Także w pliku build.gradle na poziomie projektu dodaj zależność, która ma zostać uwzględniona wtyczka google-services:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. W pliku build.gradle na poziomie aplikacji (<var>my-project</var>/<var>app-module</var>/build.gradle), dodaj następujący wiersz na dole, aby włączyć wtyczkę google-services:

    // Add to the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    

    Wtyczka google-services wykorzystuje plik google-services.json do konfiguracji Twoją aplikację, aby mogła korzystać z Firebase.

  7. Także w pliku build.gradle na poziomie aplikacji dodaj Uwierzytelnianie Firebase. zależność:

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

Krok 2. Usuń pakiet SDK Identity Toolkit

  1. Usuń konfigurację Identity Toolkit z AndroidManifest.xml . Te informacje są zawarte w pliku google-service.json oraz wczytywane przez wtyczkę google-services.
  2. Usuń pakiet SDK Identity Toolkit z aplikacji.

Krok 3. Dodaj FirebaseUI do aplikacji

  1. Dodaj Uwierzytelnianie FirebaseUI. do Twojej aplikacji.

  2. Zastąp wywołania pakietu SDK Identity Toolkit w swojej aplikacji wywołaniami FirebaseUI.

iOS

Krok 1. Dodaj Firebase do swojej aplikacji

  1. Dodaj pakiet SDK Firebase do aplikacji, uruchamiając następujące polecenia:

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Otwórz konsolę Firebase. wybierz swój projekt Identity Toolkit, który został już zaimportowany.

  3. Na stronie Przegląd kliknij Dodaj aplikację, a następnie Dodaj Firebase do: w aplikacji na iOS. W oknie Dodaj Firebase podaj identyfikator pakietu aplikacji i Identyfikator App Store, a następnie kliknij Dodaj aplikację. Plik konfiguracyjny GoogleService-Info.plist zostanie pobrany na komputera. Jeśli masz w projekcie wiele identyfikatorów pakietów, każdy z nich musi zostać połączona w konsoli Firebase, aby mogła mieć własną GoogleService-Info.plist.

  4. Skopiuj plik konfiguracji do katalogu głównego projektu Xcode i dodaj go do wszystkie cele.

Krok 2. Usuń pakiet SDK Identity Toolkit

  1. Usuń GoogleIdentityToolkit z pliku Podfile aplikacji.
  2. Uruchom polecenie pod install.

Krok 3. Dodaj FirebaseUI do aplikacji

  1. Dodaj Uwierzytelnianie FirebaseUI. do Twojej aplikacji.

  2. Zastąp wywołania pakietu SDK Identity Toolkit w swojej aplikacji wywołaniami FirebaseUI.