Najnowsza wersja zestawu narzędzi Google Identity została wydana jako Identity Platform i Uwierzytelnianie Firebase. W przyszłości praca nad funkcjami w Identity Toolkit zostanie wstrzymana. Wszystkie nowe funkcje będą rozwijane na platformie Identity i Firebase Authentication. Zachęcamy deweloperów korzystających z Identity Toolkit do przejścia na te platformy, gdy tylko będzie to możliwe w przypadku ich aplikacji.
Nowe funkcje
Identity Platform zawiera już znaczące ulepszenia funkcji w porównaniu z Google Identity Toolkit:
Nowa konsola administracyjna
Platforma Identity Platform udostępnia nową konsolę dla deweloperów, która umożliwia wyświetlanie, modyfikowanie i usuwanie użytkowników. Może to być przydatne podczas debugowania procesów logowania i rejestracji. W konsoli możesz też konfigurować metody uwierzytelniania i dostosowywać szablony e-maili.
Nowe metody uwierzytelniania
Platforma Identity obsługuje standardy federacji korporacyjnej, takie jak SAML i OIDC, co umożliwia skalowanie aplikacji i usług SaaS. Platforma Identity oferuje też obsługę dostawców takich jak GitHub, Microsoft, Yahoo i innych. 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 jak w przypadku zwykłego użytkownika. Gdy użytkownik zdecyduje się założyć konto, cała aktywność zostanie zachowana przy tym samym identyfikatorze użytkownika. Jest to przydatne w przypadku scenariuszy takich jak koszyki na serwerze czy inne aplikacje, w których chcesz zaangażować użytkownika, zanim prześlesz go do procesu rejestracji.
Zwiększaj skalę działania, korzystając z gwarancji jakości usług i pomocy technicznej w chmurze
Platforma Identity jest zbudowana na sprawdzonej infrastrukturze Google i zapewnia Gwarancje jakości usług oraz wsparcie Google Cloud. Oznacza to, że możesz bezpiecznie skalować usługę i ufać, że Google zapewni Ci odporność, dostępność i skalowalność, których potrzebujesz.
Dostęp do wszystkich funkcji Firebase
Firebase to platforma mobilna, która pomaga Ci szybko tworzyć wysokiej jakości aplikacje, zwiększać grono użytkowników i zarabiać więcej pieniędzy. Firebase składa się z uzupełniających się funkcji, które możesz łączyć i dopasowywać do swoich potrzeb. Obejmuje ono infrastrukturę do: analizy na urządzeniach mobilnych, komunikacji w chmurze, bazy danych w czasie rzeczywistym, przechowywania plików, hostowania statycznych, zdalnej konfiguracji, raportowania o awariach na urządzeniach mobilnych oraz testowania na urządzeniach z Androidem.
Zaktualizowane interfejsy użytkownika
Całkowicie przebudowaliśmy przepływy interfejsu na podstawie najnowszych badań UX Google. Obejmuje to odzyskiwanie hasła, łączenie kont oraz nowe i dotychczasowe procesy rozstrzygania wątpliwości dotyczących kont, które często wymagają sporo czasu na kodowanie i debugowanie. Integruje Smart Lock na hasła na Androidzie, co znacznie zwiększyło liczbę konwersji z logowania i rejestracji w przypadku aplikacji, które się do niego kwalifikują. Umożliwia też łatwe modyfikowanie motywów, aby dopasować je do aplikacji. Aby zapewnić maksymalną możliwość dostosowywania, udostępniliśmy wersje na Android i iOS w formie open source.
Uproszczona konfiguracja serwera
W przypadku narzędzia Identity Toolkit zauważyliśmy, że wielu deweloperów nie wdrożyło procesu odzyskiwania konta za pomocą adresu e-mail, co uniemożliwiło użytkownikom odzyskanie kont w przypadku zapomnienia hasła. Platforma Identity może wysyłać użytkownikom e-maile z weryfikacją, prośbą o zresetowanie hasła i informacjami o zmianie hasła. Teksty tych wiadomości można łatwo dostosowywać do swoich użytkowników. Nie musisz też już hostować widżetów interfejsu użytkownika do przekierowywania i wypełniania 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ć się i rejestrować nowych i starych użytkowników, uzyskiwać dostęp do właściwości użytkownika, łączyć i aktualizować konta oraz usuwać je, resetować hasła i wykonywać inne czynności bez konieczności korzystania z niezmiennego interfejsu. Jeśli wolisz, możesz ręcznie stworzyć cały proces logowania i przekazać go do tego interfejsu API.
Zarządzanie sesjami w aplikacjach mobilnych
W ramach Identity Toolkit aplikacje tworzyły własny stan sesji na podstawie zdarzenia początkowego uwierzytelniania z Identity Toolkit. Identity Platform korzysta z usługi zaplecza, która pobiera token odświeżania wygenerowany z zdarzenia uwierzytelniania i wymienia go na tokeny dostępu ważne przez godzinę 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 czasu, aż użytkownik ponownie uwierzytelni się na tym urządzeniu.
Różnice w funkcjach
Niektóre funkcje Identity Toolkit są obecnie niedostępne w Identity Platform, a inne zostały przeprojektowane i działają inaczej. Jeśli te funkcje są ważne dla Twojej aplikacji, możesz nie przeprowadzać migracji od razu. W wielu przypadkach te funkcje mogą nie być ważne dla Twojej aplikacji lub mogą istnieć łatwe rozwiązania alternatywne, które umożliwią Ci przeprowadzenie migracji.
Różnice po stronie serwera
Główna usługa Identity Toolkit wraz z podstawowymi interfejsami API REST, logiką walidacji kont i główną bazą danych użytkowników przeszła tylko drobne zmiany. Zmieniły się jednak niektóre funkcje i sposób, w jaki integrujesz Identity Platform ze swoją usługą.
Dostawcy tożsamości
Paypal i AOL nie są obsługiwane. Użytkownicy, którzy mają konta w tych usługach uwierzytelniania, nadal mogą logować się w Twojej aplikacji za pomocą procesu odzyskiwania hasła i ustawić hasło do swojego konta.
Biblioteki serwera
Obecnie dostępne są pakiety SDK dla administratorów w językach Java, Node.js, Python, Go i C#.
E-maile dotyczące zarządzania kontem
Wiadomości o resetowaniu hasła, weryfikacji adresu e-mail i zmianie adresu e-mail mogą być wysyłane przez Firebase lub z własnego serwera poczty dewelopera. Obecnie szablony e-maili umożliwiają ograniczone dostosowywanie w interfejsie, ale można je dodatkowo dostosować za pomocą pakietów Admin SDK.
Potwierdzenie zmiany adresu e-mail
Gdy użytkownik zdecyduje się zmienić adres e-mail, Identity Toolkit wyśle na nowy adres e-mail e-maila z linkiem do dalszego procesu zmiany adresu e-mail.
Firebase potwierdza zmianę adresu e-mail, wysyłając na stary adres e-mail e-maila z linkiem umożliwiającym cofnięcie zmiany.
Wdrażanie dostawcy tożsamości
Narzędzie Identity Toolkit umożliwiało stopniowe dodawanie dostawców tożsamości do systemu logowania, aby umożliwić Ci eksperymentowanie z ich wpływem na prośby o pomoc. Ta funkcja została usunięta z Uwierzytelniania Firebase.
Różnice po stronie klienta
W Identity Platform funkcje dostępne w Google Identity Toolkit są podzielone na 2 komponenty:
Pakiety SDK klienta i serwera
W Identity Platform funkcje interfejsu REST API Identity Toolkit zostały zapakowane 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 z profilu użytkownika, łączyć, aktualizować i usuwać konta oraz resetować hasła, zamiast komunikować się z usługą w back-endzie za pomocą wywołań REST.
Widżet UI
Wszystkie przepływy interfejsu użytkownika dotyczące logowania, rejestracji, odzyskiwania hasła i łączenia kont zostały przebudowane za pomocą pakietów SDK klienta i zapakowane w widżet logowania. Są one dostępne jako pakiety SDK typu open source na iOS, Android i WWW. Umożliwiają one pełną personalizację przepływów w sposób niedostępny w przypadku Identity Toolkit.
Dodatkowe różnice:
Sesje i migracja
Ponieważ sesjami zarządza się inaczej w Identity Toolkit i Identity Platform, po uaktualnieniu pakietu SDK istniejące sesje użytkowników zostaną zakończone, a użytkownicy będą musieli się ponownie zalogować.
Zanim zaczniesz
Zanim przejdziesz z Identity Toolkit na Identity Platform, musisz:
Otwórz konsolę Google Cloud i wybierz projekt Identity Toolkit.
W Marketplace przejdź do Identity Platform i wybierz „Włącz Identity Platform”.
Otwórz Konta usługi. Tutaj możesz zobaczyć konto usługi skonfigurowane wcześniej w przypadku 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. Plik JSON zawierający dane logowania do konta usługi zostanie pobrany. Będzie on potrzebny do zainicjowania pakietu SDK w następnym kroku.
Wróć do konsoli Cloud. W sekcji Dostawcy w ramach metody logowania „E-mail/hasło” otwórz stronę Szablony e-maili. Następnie możesz dostosować szablony aplikacji.
W przypadku resetowania haseł, zmiany adresów e-mail lub weryfikacji adresów e-mail przez użytkowników w Identity Toolkit należało uzyskać kod OOB z serwera Identity Toolkit, a następnie wysłać go do użytkowników e-mailem. Platforma Identity Platform wysyła e-maile na podstawie skonfigurowanych przez Ciebie szablonów bez konieczności wykonywania dodatkowych czynności.
Opcjonalnie: jeśli chcesz uzyskać dostęp do usług Platformy tożsamości na swoim serwerze, zainstaluj pakiet SDK Firebase.
Pakiet Admin SDK Node.js możesz zainstalować za pomocą:
npm
$ npm init $ npm install --save firebase-admin
W kodzie możesz uzyskać dostęp do Firebase, używając:
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 przeniesieniem danych na platformę aplikacji: Android, iOS lub internet.
Serwery i JavaScript
Ważne zmiany
Implementacja internetowa Identity Platform różni się od Identity Toolkit pod wieloma względami.
Zarządzanie sesjami przeglądarki
Wcześniej, gdy użytkownik uwierzytelnił się za pomocą widżetu Identity Toolkit, ustawiany był plik cookie, który służył do inicjowania sesji. Plik cookie miał 2-tygodniowy okres ważności i służył do umożliwienia użytkownikowi korzystania 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 frameworku.
Pakiety SDK klienta Identity Platform zarządzają teraz tokenami tożsamości i współpracują z backendem Identity Platform, aby sesja była aktualna. Sesje wygasają, gdy na koncie nastąpiły ważne zmiany (np. zmiana hasła). Tokeny identyfikacyjne nie są automatycznie ustawiane jako pliki cookie w kliencie internetowym i mają czas ważności wynoszący tylko godzinę. Jeśli nie chcesz, aby sesje trwały tylko godzinę, nie używaj tokenów identyfikatora jako plików cookie do sprawdzania wszystkich żądań stron. Zamiast tego musisz skonfigurować odbiornik, który będzie działał, gdy użytkownik się zaloguje, pobierać token identyfikacyjny, weryfikować token i tworzyć własne pliki cookie za pomocą systemu zarządzania plikami cookie w ramach frameworku.
Czas trwania sesji pliku cookie musisz ustawić na podstawie wymagań bezpieczeństwa aplikacji.
Proces logowania na stronie internetowej
Wcześniej, gdy użytkownik inicjował logowanie, był przekierowywany na stronę
accountchooser.com
, aby poznać identyfikator, którego chce użyć. Proces w interfejsie Identity Platform rozpoczyna się teraz od listy metod logowania, w tym opcji e-mail, która przekierowuje doaccountchooser.com
w przypadku internetu i korzysta z interfejsu hintRequest API na Androidzie. Ponadto adresy e-mail nie są już wymagane w interfejsie. Ułatwi to obsługę użytkowników anonimowych, użytkowników uwierzytelniania niestandardowego lub użytkowników z dostawców, którzy nie wymagają adresów e-mail.Widżet zarządzania kontem
Ten widget udostępnia interfejs, za pomocą którego użytkownicy mogą zmieniać adresy e-mail, hasła i odłączać konta od dostawców tożsamości. Jest on obecnie w trakcie opracowywania.
Przycisk logowania lub widżet
Nie są już dostępne widżety, takie jak przycisk logowania czy karta użytkownika. Można je bardzo łatwo tworzyć za pomocą interfejsu Firebase Authentication API.
Brak signOutUrl
Musisz zadzwonić pod numer
firebase.auth.signOut()
i odbierz połączenie zwrotne.Brak oobActionUrl
Wysyłanie e-maili jest teraz obsługiwane przez Identity Platform i jest konfigurowane w konsoli Firebase.
Personalizacja usługi porównywania cen za pomocą kodu CSS
Widżet interfejsu użytkownika korzysta ze stylu Material Design Lite, który dynamicznie dodaje animacje w stylu Material Design.
Krok 1. Zmień kod serwera
Jeśli Twój serwer korzysta z tokenu Identity Toolkit (ważny przez 2 tygodnie) do zarządzania sesjami użytkowników w internecie, musisz przekształcić serwer w taki sposób, aby używał własnego pliku cookie sesji.
- Wdrożyć punkt końcowy do weryfikowania tokena identyfikacyjnego i ustawienia pliku cookie sesji dla użytkownika. Aplikacja kliencka wysyła token Firebase ID do tego punktu końcowego.
- Jeśli żądanie przychodzące zawiera Twój własny plik cookie sesji, możesz uznać, że użytkownik został uwierzytelniony. W przeciwnym razie traktuj żądanie jako nieuwierzytelnione.
- Jeśli nie chcesz, aby użytkownicy utracili swoje dotychczasowe sesje, poczekaj 2 tygodnie, aż wszystkie tokeny pakietu narzędzi Identity Toolkit wygasną, lub zweryfikuj tokeny podwójne w swojej aplikacji internetowej, jak opisano poniżej w kroku 3.
Ponieważ tokeny identyfikatora różnią się od tokenów pakietu Identity Toolkit, musisz zaktualizować logikę weryfikacji tokenów. Zainstaluj pakiet Admin SDK na serwerze. Jeśli używasz języka, którego nie obsługuje ten pakiet, pobierz bibliotekę do weryfikacji tokenów JWT dla swojego środowiska i prawidłowo potwierdź token.
Po wprowadzeniu powyższych zmian nadal możesz 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 na serwerze, która analizuje 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 będą przenoszone do platformy Identity, dlatego musisz używać tylko metod weryfikacji za pomocą tokena tożsamości.
Zapoznaj się z dokumentacją interfejsu Web API.
Krok 2. Zaktualizuj kod HTML
Dodaj kod inicjowania do aplikacji:
- Otwórz projekt w konsoli Cloud.
- Na stronie Dostawcy kliknij Szczegóły konfiguracji aplikacji. Wyświetli się fragment kodu, który inicjuje Identity Platform.
- Skopiuj i wklej fragment kodu inicjalizacji na swoją stronę internetową.
Dodaj widżet uwierzytelniania 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>
Usuń z aplikacji pakiet SDK Identity Toolkit.
Jeśli do zarządzania sesją używasz tokena ID z Identity Toolkit, musisz wprowadzić te zmiany po stronie klienta:
Po zalogowaniu się w Identity Platform pobierz token identyfikacyjny, wywołując funkcję
firebase.auth().currentUser.getToken()
.Wyślij token identyfikatora do serwera backendu, zweryfikuj go i wystaw własny plik cookie sesji.
Podczas wykonywania operacji narażonych na wyciek danych lub wysyłania uwierzytelnionych żądań edycji do serwera nie polegaj wyłącznie na pliku cookie sesji. Musisz zapewnić dodatkową ochronę przed atakami CSRF (Cross-Site Request Forgery).
Jeśli Twoja platforma nie zapewnia ochrony przed atakami CSRF, możesz zapobiec takim atakom, uzyskując token identyfikatora zalogowanego użytkownika za pomocą funkcji
getToken()
i dołączając ten token do każdego żądania (domyślnie zostanie też wysłany plik cookie sesji). Następnie możesz zweryfikować ten token, używając pakietu SDK do zarządzania, oprócz sprawdzania plików cookie sesji, które zostało już wykonane przez framework. Dzięki temu utrudnisz przeprowadzanie ataków CSRF, ponieważ identyfikator tokena jest przechowywany tylko w pamięci internetowej, a nigdy w pliku cookie.Tokeny zestawu narzędzi tożsamości są ważne przez 2 tygodnie. Możesz nadal wydawać tokeny, które będą ważne przez 2 tygodnie, lub wydłużyć lub skrócić ten czas w zależności od wymagań bezpieczeństwa aplikacji. Gdy użytkownik się wyloguje, usuń plik cookie sesji.
Krok 3. Zaktualizuj adresy URL przekierowań dostawcy tożsamości
W konsoli Google Cloud otwórz sekcję Dostawcy.
W przypadku każdego obsługiwanego dostawcy logowania federacyjnego:
- Kliknij nazwę dostawcy usługi logowania.
- Skopiuj identyfikator URI przekierowania OAuth.
- W konsoli dewelopera dostawcy usługi logowania zaktualizuj identyfikator URI przekierowania OAuth.
Android
Krok 1. Dodaj Identity Platform do aplikacji za pomocą Firebase
Otwórz Cloud Console i wybierz projekt Identity Toolkit.
Na stronie Usługodawcy kliknij Szczegóły konfiguracji aplikacji, wybierz kartę Android, a potem kliknij Rozpocznij na Firebase. W oknie Dodawanie Firebase podaj nazwę pakietu aplikacji i odcisk cyfrowy certyfikatu podpisującego, a potem kliknij Dodaj aplikację. Plik konfiguracji
google-services.json
zostanie pobrany na komputer.Skopiuj plik konfiguracji do głównego katalogu modułu swojej aplikacji na Androida. Ten plik konfiguracji zawiera informacje o projekcie i kliencie OAuth Google.
W pliku
build.gradle
na poziomie projektu (<var>your-project</var>/build.gradle
) określ nazwę pakietu aplikacji w sekcjidefaultConfig
:defaultConfig { ….. applicationId "com.your-app" }
W pliku
build.gradle
na poziomie projektu dodaj też zależność, aby uwzględnić w nim wtyczkę google-services:buildscript { dependencies { // Add this line classpath 'com.google.gms:google-services:3.0.0' } }
Aby włączyć wtyczkę google-services, dodaj w pliku
build.gradle
(<var>my-project</var>/<var>app-module</var>/build.gradle
) na poziomie aplikacji następujący wiersz po wtyczce Android Gradle:apply plugin: 'com.android.application' // Add this line apply plugin: 'com.google.gms.google-services'
Wtyczka google-services używa pliku
google-services.json
do konfigurowania aplikacji pod kątem używania Firebase.W pliku
build.gradle
na poziomie aplikacji dodaj też zależność Uwierzytelnianie Firebase:compile 'com.google.firebase:firebase-auth:23.1.0' compile 'com.google.android.gms:play-services-auth:21.3.0'
Krok 2. Usuń pakiet SDK Identity Toolkit
- Usuń konfigurację Identity Toolkit z pliku
AndroidManifest.xml
. Te informacje są zawarte w plikugoogle-service.json
i 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 swojej aplikacji
Dodaj pakiet SDK klienta do aplikacji, wykonując te polecenia:
$ cd your-project directory $ pod init $ pod 'Firebase'
Otwórz Cloud Console i wybierz projekt Identity Toolkit.
Na stronie Usługodawcy kliknij Szczegóły konfiguracji aplikacji, wybierz kartę iOS, a potem kliknij Rozpocznij na Firebase. W oknie Dodawanie Firebase podaj nazwę pakietu aplikacji i odcisk cyfrowy certyfikatu podpisującego, a następnie kliknij Dodaj aplikację. Plik konfiguracji
google-services.json
zostanie pobrany na komputer. W oknie Dodawanie Firebase podaj identyfikator pakietu aplikacji i identyfikator App Store, a potem kliknij Dodaj aplikację. Plik konfiguracjiGoogleService-Info.plist
zostanie pobrany na komputer. Jeśli w projekcie masz wiele identyfikatorów pakietów, każdy z nich musi być połączony w konsoli Firebase, aby mieć własny plikGoogleService-Info.plist
.Skopiuj plik konfiguracji do katalogu głównego projektu Xcode i dodaj go do wszystkich elementów docelowych.
Krok 2. Usuń pakiet SDK Identity Toolkit
- Usuń
GoogleIdentityToolkit
z 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.