Najnowsza wersja Google Identity Toolkit została wydana jako Identity Platform i Uwierzytelnianie Firebase. Prace nad nowymi funkcjami Identity Toolkit zostaną wstrzymane. Wszystkie nowe funkcje będą rozwijane w Identity Platform i Firebase Authentication. Zachęcamy deweloperów Identity Toolkit do przejścia na te platformy, gdy tylko będzie to możliwe w przypadku ich aplikacji.
Nowe funkcje
Identity Platform ma już znaczące ulepszenia funkcji w porównaniu z Google Identity Toolkit:
Nowa konsola administracyjna
Identity Platform ma nową konsolę deweloperską, która umożliwia wyświetlanie, modyfikowanie i usuwanie użytkowników. Może to być przydatne podczas debugowania przepływów logowania i rejestracji. Konsola umożliwia też konfigurowanie metod uwierzytelniania i dostosowywanie szablonów e-maili.
Nowe metody uwierzytelniania
Identity Platform obsługuje standardy federacji dla przedsiębiorstw, takie jak SAML i OIDC, co umożliwia skalowanie aplikacji i usług SaaS. Identity Platform obsługuje też dostawców takich jak GitHub, Microsoft, Yahoo i inni. Możesz użyć logowania anonimowego, aby utworzyć unikalny identyfikator użytkownika bez konieczności przechodzenia przez proces logowania lub rejestracji. Dzięki temu możesz wykonywać uwierzytelnione wywołania interfejsu API tak samo jak w przypadku zwykłego użytkownika. Gdy użytkownik zdecyduje się zarejestrować konto, cała aktywność jest zachowywana z tym samym identyfikatorem User-ID. Jest to przydatne w przypadku scenariuszy takich jak koszyki zakupów po stronie serwera lub inne aplikacje, w których chcesz zaangażować użytkownika przed wysłaniem go do procesu rejestracji.
Skaluj z pewnością dzięki gwarancjom jakości usług i pomocy Google Cloud
Identity Platform korzysta z zaufanej infrastruktury Google i zapewnia gwarancje jakości usług oraz pomoc techniczną Google Cloud. Oznacza to, że możesz bez obaw skalować usługę i polegać na Google w zakresie odporności, dostępności i skalowalności, których potrzebujesz.
Dostęp do wszystkich usług Firebase
Firebase to platforma mobilna, która pomaga szybko tworzyć wysokiej jakości aplikacje, zwiększać liczbę użytkowników i pomnażać przychody. Firebase składa się z uzupełniających się funkcji, które możesz dowolnie łączyć, aby dopasować je do swoich potrzeb. Obejmuje infrastrukturę do: analityki mobilnej, komunikacji w chmurze, bazy danych w czasie rzeczywistym, przechowywania plików, hostingu statycznego, konfiguracji zdalnej, raportowania awarii na urządzeniach mobilnych i testowania na Androidzie.
Zaktualizowane interfejsy
Całkowicie przebudowaliśmy przepływy interfejsu na podstawie najnowszych badań UX przeprowadzonych przez Google. Obejmuje to odzyskiwanie hasła, łączenie kont oraz procesy rozróżniania nowych i istniejących kont, których kodowanie i debugowanie często zajmuje dużo czasu. Jest on zintegrowany z Smart Lockiem na hasła na Androidzie, co znacznie zwiększyło liczbę konwersji związanych z logowaniem i rejestracją w przypadku aplikacji, które korzystają z tej funkcji. Umożliwia też łatwe modyfikowanie motywów, aby dopasować je do aplikacji. Wersje na Android i iOS są dostępne na licencji open source, co zapewnia maksymalną możliwość dostosowania.
Uproszczona konfiguracja serwera
W przypadku Identity Toolkit zauważyliśmy, że wielu deweloperów nie wdrażało procesu odzyskiwania adresu e-mail, co uniemożliwiało użytkownikom odzyskanie konta, jeśli zapomnieli hasła. Identity Platform może wysyłać do użytkownika e-maile z prośbą o potwierdzanie adresu e-mail, zresetowanie hasła lub powiadomieniem o zmianie hasła. Tekst tych wiadomości można łatwo dostosować do potrzeb użytkowników. Dodatkowo nie musisz już hostować widżetów interfejsu do hostowania przekierowań i przeprowadzania operacji zmiany hasła.
Nowe pakiety SDK
Wszystkie interfejsy API serwera Identity Toolkit są teraz dostępne natywnie w każdej z naszych bibliotek klienta (Android, iOS, internet). Deweloperzy będą mogli logować i rejestrować starych i nowych użytkowników, uzyskiwać dostęp do właściwości użytkownika, łączyć, aktualizować i usuwać konta, resetować hasła i wykonywać inne czynności bez konieczności korzystania z ustalonego interfejsu. Jeśli wolisz, możesz ręcznie utworzyć cały proces logowania i interfejs na podstawie tego interfejsu API.
Zarządzanie sesjami w aplikacjach mobilnych
W przypadku Identity Toolkit aplikacje tworzyły własny stan sesji na podstawie początkowego zdarzenia uwierzytelniania z Identity Toolkit. Identity Platform korzysta z usługi backendu, która pobiera token odświeżania wygenerowany na podstawie zdarzenia uwierzytelniania i wymienia go na godzinne tokeny dostępu na Androida, iOS i JavaScript. Gdy użytkownik zmieni hasło, tokeny odświeżania nie będą już mogły generować nowych tokenów dostępu, co spowoduje wyłączenie dostępu do momentu ponownego uwierzytelnienia użytkownika na tym urządzeniu.
Różnice między funkcjami
Niektóre funkcje Identity Toolkit nie są obecnie dostępne na platformie Identity, a inne zostały przeprojektowane i działają inaczej. Jeśli te funkcje są ważne dla Twojej aplikacji, możesz nie decydować się na natychmiastową migrację. W wielu przypadkach te funkcje mogą nie być ważne dla Twojej aplikacji lub mogą istnieć proste rozwiązania zastępcze, które umożliwią Ci przeprowadzenie migracji.
Różnice po stronie serwera
Podstawowa usługa Identity Toolkit wraz z bazowymi interfejsami API typu REST, logiką weryfikacji konta i główną bazą danych użytkowników przeszła tylko niewielkie aktualizacje. Niektóre funkcje i sposób integracji Identity Platform z usługą uległy jednak zmianie.
Dostawcy tożsamości
Usługi PayPal i AOL nie są obsługiwane. Użytkownicy z kontami od tych dostawców tożsamości nadal mogą logować się w Twojej aplikacji za pomocą procesu odzyskiwania hasła i ustawiać hasło do swojego konta.
Biblioteki serwera
Obecnie dostępne są pakiety SDK administratora dla języków Java, Node.js, Python, Go i C#.
E-maile dotyczące zarządzania kontem
Wiadomości dotyczące resetowania hasła, potwierdzania adresu e-mail i zmiany adresu e-mail mogą być wysyłane przez Firebase lub z własnego serwera poczty dewelopera. Obecnie szablony e-maili oferują tylko ograniczone możliwości dostosowywania w interfejsie, ale można je dodatkowo dostosować za pomocą pakietów SDK administratora.
Potwierdzenie zmiany adresu e-mail
Gdy użytkownik zdecyduje się zmienić adres e-mail w Identity Toolkit, na nowy adres zostanie wysłany e-mail z linkiem umożliwiającym kontynuowanie procesu zmiany adresu e-mail.
Firebase potwierdza zmianę adresu e-mail, wysyłając na stary adres e-mail wiadomość z linkiem umożliwiającym cofnięcie zmiany.
Wdrażanie strony Szczegóły problemu
Identity Toolkit umożliwiał stopniowe dodawanie dostawców tożsamości do systemu logowania, dzięki czemu można było eksperymentować z wpływem na zgłoszenia do pomocy. Ta funkcja została usunięta z Uwierzytelniania Firebase.
Różnice po stronie klienta
W Identity Platform funkcje udostępniane przez Google Identity Toolkit są podzielone na 2 komponenty:
Pakiety SDK klienta i serwera
W Identity Platform funkcje udostępniane przez interfejs REST API Identity Toolkit zostały spakowane w pakiety SDK klienta dostępne na Androida, iOS i JavaScript. Za pomocą pakietu SDK możesz logować i rejestrować użytkowników, uzyskiwać dostęp do informacji o profilu użytkownika, łączyć, aktualizować i usuwać konta oraz resetować hasła za pomocą pakietu SDK klienta zamiast komunikować się z usługą backendu za pomocą wywołań REST.
Widżet interfejsu
Wszystkie interfejsy użytkownika, które zarządzają logowaniem, rejestracją, odzyskiwaniem hasła i łączeniem kont, zostały przebudowane przy użyciu pakietów SDK klienta i spakowane jako widżet logowania. Są one dostępne jako pakiety SDK open source na iOS, Android i strony internetowe. Umożliwiają pełne dostosowywanie procesów w sposób niedostępny w przypadku Identity Toolkit.
Dodatkowe różnice:
Sesje i migracja
Sesje są zarządzane inaczej w Identity Toolkit i Identity Platform, więc po uaktualnieniu pakietu SDK istniejące sesje użytkowników zostaną zakończone i będą oni musieli zalogować się ponownie.
Zanim zaczniesz
Zanim przejdziesz z Identity Toolkit na Identity Platform, musisz:
Otwórz konsolę Cloud i wybierz projekt Identity Toolkit.
W Marketplace przejdź do Identity Platform i kliknij „Włącz Identity Platform”.
Otwórz Konta usługi. Tutaj możesz zobaczyć konto usługi, które zostało wcześniej skonfigurowane dla Identity Toolkit.
Obok konta usługi kliknij more_vert > Utwórz klucz. Następnie w oknie Tworzenie klucza prywatnego ustaw typ klucza na JSON i kliknij Utwórz. Pobierany jest plik JSON zawierający dane logowania do konta usługi. Będzie on potrzebny do zainicjowania pakietu SDK w następnym kroku.
Wróć do konsoli Cloud. W sekcji Dostawcy w metodzie logowania „E-mail/hasło” otwórz stronę Szablony e-maili. Następnie możesz dostosować szablony aplikacji.
W Identity Toolkit, gdy użytkownicy resetowali hasła, zmieniali adresy e-mail lub weryfikowali adresy e-mail, musieliście pobrać kod OOB z serwera Identity Toolkit, a następnie wysłać go do użytkowników e-mailem. Identity Platform wysyła e-maile na podstawie skonfigurowanych przez Ciebie szablonów bez konieczności podejmowania dodatkowych działań.
Opcjonalnie: jeśli chcesz mieć dostęp do usług Identity Platform na serwerze, zainstaluj pakiet SDK Firebase.
Pakiet Admin SDK Node.js możesz zainstalować za pomocą polecenia
npm:$ npm init $ npm install --save firebase-adminW kodzie możesz uzyskać dostęp do Firebase za pomocą tych metod:
var admin = require('firebase-admin'); var app = admin.initializeApp({ credential: admin.credential.cert('path/to/serviceAccountCredentials.json') });
Następnie wykonaj czynności związane z migracją na platformie aplikacji: Android, iOS, sieć.
Serwery i JavaScript
Najważniejsze zmiany
W implementacji internetowej Identity Platform występuje kilka dodatkowych różnic w porównaniu z Identity Toolkit.
Zarządzanie sesjami w internecie
Wcześniej, gdy użytkownik przeprowadzał uwierzytelnianie za pomocą widżetu Identity Toolkit, ustawiany był plik cookie, który służył do inicjowania sesji. Ten plik cookie miał 2-tygodniowy okres ważności i umożliwiał użytkownikowi korzystanie z widżetu zarządzania kontem w celu zmiany hasła i adresu e-mail. Niektóre witryny używały tego pliku cookie do uwierzytelniania wszystkich innych żądań stron w witrynie. Inne witryny używały tego pliku cookie do tworzenia własnych plików cookie za pomocą systemu zarządzania plikami cookie w swoim frameworku.
Pakiety SDK klienta Identity Platform zarządzają teraz tokenami tożsamości i współpracują z backendem Identity Platform, aby utrzymać sesję w aktualnym stanie. Backend wygasza sesje, gdy na koncie zostaną wprowadzone ważne zmiany (np. zmiana hasła użytkownika). Tokeny identyfikatora nie są automatycznie ustawiane jako pliki cookie w kliencie internetowym i mają tylko godzinę ważności. Jeśli nie chcesz, aby sesje trwały tylko godzinę, tokeny identyfikatora nie nadają się do używania jako pliki cookie do weryfikowania wszystkich żądań stron. Zamiast tego musisz skonfigurować odbiornik, który będzie reagować na logowanie się użytkownika, pobrać token identyfikatora, zweryfikować go i utworzyć własny plik cookie za pomocą systemu zarządzania plikami cookie w swoim frameworku.
Musisz ustawić czas trwania sesji pliku cookie na podstawie potrzeb aplikacji w zakresie bezpieczeństwa.
Proces logowania w internecie
Wcześniej, gdy użytkownik rozpoczynał proces logowania, był przekierowywany na stronę
accountchooser.com, aby wybrać identyfikator, którego chce użyć. Interfejs Identity Platform rozpoczyna się teraz od listy metod logowania, w tym opcji logowania za pomocą adresu e-mail, która w przypadku internetu prowadzi doaccountchooser.com, a na Androidzie korzysta z interfejsu hintRequest API. Dodatkowo w interfejsie nie są już wymagane adresy e-mail. Ułatwi to obsługę anonimowych użytkowników, użytkowników z niestandardowym uwierzytelnianiem lub użytkowników od dostawców, którzy nie wymagają adresów e-mail.Widżet zarządzania kontem
Ten widżet udostępnia interfejs użytkownika, który umożliwia zmianę adresu e-mail, hasła lub odłączenie kont od dostawców tożsamości. Jest ona obecnie w trakcie opracowywania.
Przycisk lub widżet logowania
Widżety takie jak przycisk logowania i karta użytkownika nie są już dostępne. Można je bardzo łatwo tworzyć za pomocą interfejsu Uwierzytelnianie Firebase API.
Brak signOutUrl
Musisz wywołać metodę
firebase.auth.signOut()i obsłużyć wywołanie zwrotne.Brak oobActionUrl
Wysyłanie e-maili jest teraz obsługiwane przez Identity Platform i konfigurowane w konsoli Firebase.
Dostosowywanie CSS
Widżet interfejsu użytkownika korzysta ze stylizacji Material Design Lite, która dynamicznie dodaje animacje Material Design.
Krok 1. Zmień kod serwera
Jeśli serwer korzysta z tokena Identity Toolkit (ważnego przez 2 tygodnie) do zarządzania sesjami użytkowników w internecie, musisz go przekonwertować, aby używał własnego pliku cookie sesji.
- Zaimplementuj punkt końcowy do weryfikowania tokena identyfikatora i ustawiania pliku cookie sesji dla użytkownika. Aplikacja kliencka wysyła do tego punktu końcowego token identyfikatora Firebase.
- Jeśli przychodzące żądanie zawiera Twój plik cookie sesji, możesz uznać użytkownika za uwierzytelnionego. W przeciwnym razie traktuj żądanie jako nieuwierzytelnione.
- Jeśli nie chcesz, aby którykolwiek z użytkowników utracił istniejące sesje logowania, poczekaj 2 tygodnie, aż wygasną wszystkie tokeny Identity Toolkit, lub przeprowadź w aplikacji internetowej weryfikację podwójnych tokenów, jak opisano poniżej w kroku 3.
Następnie, ponieważ tokeny identyfikatora różnią się od tokenów Identity Toolkit, musisz zaktualizować logikę weryfikacji tokenów. Zainstaluj na serwerze pakiet Admin SDK. Jeśli używasz języka nieobsługiwanego przez pakiet Admin SDK, pobierz bibliotekę do weryfikacji tokenów JWT dla swojego środowiska i prawidłowo zweryfikuj token.
Po wprowadzeniu powyższych zmian możesz nadal mieć ścieżki kodu, które korzystają z tokenów Identity Toolkit. Jeśli masz aplikacje na iOS lub Androida, użytkownicy będą musieli zaktualizować je do nowej wersji, aby nowe ścieżki kodu działały. Jeśli nie chcesz zmuszać użytkowników do aktualizowania aplikacji, możesz dodać dodatkową logikę weryfikacji serwera, która sprawdza token i określa, czy do jego weryfikacji należy użyć pakietu SDK Firebase czy pakietu SDK Identity Toolkit. Jeśli masz tylko aplikację internetową, wszystkie nowe żądania uwierzytelniania zostaną przeniesione do Identity Platform, więc musisz używać tylko metod weryfikacji tokena tożsamości.
Zapoznaj się z dokumentacją Web API.
Krok 2. Zaktualizuj kod HTML
Dodaj kod inicjowania do aplikacji:
- Otwórz projekt w konsoli Cloud.
- Na stronie dostawców kliknij Szczegóły konfiguracji aplikacji. Wyświetlony zostanie fragment kodu, który inicjuje Identity Platform.
- Skopiuj fragment kodu inicjującego i wklej go na stronę internetową.
Dodaj do aplikacji widżet uwierzytelniania:
<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>Usuń z aplikacji pakiet SDK Identity Toolkit.
Jeśli do zarządzania sesjami używasz tokena identyfikatora Identity Toolkit, musisz wprowadzić te zmiany po stronie klienta:
Po zalogowaniu się w Identity Platform uzyskaj token identyfikacyjny, wywołując funkcję
firebase.auth().currentUser.getToken().Wyślij token identyfikatora do serwera backendu, zweryfikuj go i wydaj własny plik cookie sesji.
Nie polegaj wyłącznie na pliku cookie sesji podczas wykonywania operacji wymagających zachowania poufności lub wysyłania do serwera uwierzytelnionych żądań edycji. Musisz zapewnić dodatkową ochronę przed atakami typu cross-site request forgery (CSRF).
Jeśli Twój framework nie zapewnia ochrony przed atakami CSRF, jednym ze sposobów zapobiegania atakom jest uzyskanie tokena identyfikatora zalogowanego użytkownika za pomocą
getToken()i dołączanie go do każdego żądania (domyślnie wysyłany jest też plik cookie sesji). Następnie musisz zweryfikować ten token za pomocą pakietu Admin SDK, a także sprawdzić plik cookie sesji, co zostało wykonane przez platformę backendu. Utrudni to przeprowadzanie ataków CSRF, ponieważ token identyfikatora jest przechowywany tylko w pamięci internetowej, a nigdy w pliku cookie.Tokeny Identity Toolkit są ważne przez 2 tygodnie. Możesz nadal wydawać tokeny, które wygasają po 2 tygodniach, lub wydłużyć lub skrócić ten okres w zależności od wymagań dotyczących bezpieczeństwa aplikacji. Gdy użytkownik się wyloguje, wyczyść plik cookie sesji.
Krok 3. Zaktualizuj adresy URL przekierowania dostawcy tożsamości
W Cloud Console otwórz sekcję Dostawcy.
W przypadku każdego obsługiwanego dostawcy logowania federacyjnego wykonaj te czynności:
- Kliknij nazwę dostawcy logowania.
- Skopiuj identyfikator URI przekierowania OAuth.
- W konsoli programisty dostawcy logowania zaktualizuj adres URI przekierowania OAuth.
Android
Krok 1. Dodaj Identity Platform do aplikacji za pomocą Firebase
Otwórz konsolę Cloud i wybierz projekt Identity Toolkit.
Na stronie Dostawcy kliknij Szczegóły konfiguracji aplikacji, wybierz kartę Android, a potem kliknij Rozpocznij w Firebase. W oknie dialogowym Dodaj Firebase podaj nazwę pakietu aplikacji i odcisk cyfrowy certyfikatu podpisującego, a potem kliknij Dodaj aplikację. Plik konfiguracyjny
google-services.jsonzostanie pobrany na Twój komputer.Skopiuj plik konfiguracji do katalogu głównego modułu aplikacji na Androida. Ten plik konfiguracji zawiera informacje o projekcie i kliencie OAuth Google.
W pliku
build.gradlena poziomie projektu (<var>your-project</var>/build.gradle) podaj nazwę pakietu aplikacji w sekcjidefaultConfig:defaultConfig { ….. applicationId "com.your-app" }W pliku
build.gradlena poziomie projektu dodaj też zależność, aby uwzględnić wtyczkę google-services:buildscript { dependencies { // Add this line classpath 'com.google.gms:google-services:3.0.0' } }W pliku
build.gradlena poziomie aplikacji<var>my-project</var>/<var>app-module</var>/build.gradledodaj ten wiersz po wtyczce Androida do obsługi Gradle, aby włączyć wtyczkę google-services:apply plugin: 'com.android.application' // Add this line apply plugin: 'com.google.gms.google-services'Wtyczka usług Google używa pliku
google-services.jsondo konfigurowania aplikacji pod kątem korzystania z Firebase.W pliku
build.gradlena poziomie aplikacji dodaj też zależność Uwierzytelniania Firebase:compile 'com.google.firebase:firebase-auth:24.2.0' compile 'com.google.android.gms:play-services-auth:22.0.0'
Krok 2. Usuń pakiet SDK Identity Toolkit
- Usuń konfigurację Identity Toolkit z pliku
AndroidManifest.xml. Te informacje są zawarte w plikugoogle-service.jsoni wczytywane przez wtyczkę google-services. - Usuń z aplikacji pakiet SDK Identity Toolkit.
Krok 3. Dodaj FirebaseUI do aplikacji
Dodaj do aplikacji FirebaseUI Auth.
W aplikacji zastąp wywołania pakietu SDK Identity Toolkit wywołaniami FirebaseUI.
iOS
Krok 1. Dodaj Firebase do aplikacji
Dodaj pakiet SDK klienta do aplikacji, uruchamiając te polecenia:
$ cd your-project directory $ pod init $ pod 'Firebase'Otwórz konsolę Cloud i wybierz projekt Identity Toolkit.
Na stronie Dostawcy kliknij Szczegóły konfiguracji aplikacji, wybierz kartę iOS, a potem kliknij Rozpocznij w Firebase. W oknie dialogowym Dodaj Firebase podaj nazwę pakietu aplikacji i odcisk cyfrowy certyfikatu podpisującego, a potem kliknij Dodaj aplikację. Plik konfiguracyjny
google-services.jsonzostanie pobrany na komputer. W oknie dialogowym Dodaj Firebase podaj identyfikator pakietu i identyfikator App Store aplikacji, a potem kliknij Dodaj aplikację. Na komputer zostanie pobrany plik konfiguracyjnyGoogleService-Info.plist. Jeśli w projekcie masz kilka identyfikatorów pakietu, każdy z nich musi być połączony w konsoli Firebase, aby mógł mieć własny plikGoogleService-Info.plist.Skopiuj plik konfiguracyjny do katalogu głównego projektu Xcode i dodaj go do wszystkich elementów docelowych.
Krok 2. Usuń pakiet SDK Identity Toolkit
- Usuń
GoogleIdentityToolkitz pliku Podfile aplikacji. - Uruchom polecenie
pod install.
Krok 3. Dodaj FirebaseUI do aplikacji
Dodaj do aplikacji FirebaseUI Auth.
W aplikacji zastąp wywołania pakietu SDK Identity Toolkit wywołaniami FirebaseUI.