Najnowsza wersja Identity Toolkit została udostępniona jako Identity Platform i Uwierzytelnianie Firebase. W przyszłości prace nad funkcjami Identity Toolkit zostaną wstrzymane. Wszystkie nowe funkcje będą opracowywane w ramach Identity Platform i Uwierzytelniania Firebase. Zachęcamy deweloperów korzystających z Identity Toolkit do przejścia na te platformy tak szybko, jak to możliwe w przypadku ich aplikacji.
Nowe funkcje
Identity Platform ma już wiele ulepszeń w porównaniu z Identity Toolkit:
Nowa konsola administracyjna
Identity Platform ma nową konsolę dewelopera , która umożliwia wyświetlanie, modyfikowanie i usuwanie użytkowników. Może to być przydatne podczas debugowania procesó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 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 i Yahoo. 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 zwykły użytkownik. Gdy użytkownik zdecyduje się zarejestrować konto, cała aktywność zostanie zachowana z tym samym identyfikatorem użytkownika. Jest to przydatne w scenariuszach takich jak koszyki po stronie serwera lub inne aplikacje, w których chcesz zaangażować użytkownika przed wysłaniem go do procesu rejestracji.
Skalowanie z pewnością dzięki gwarancjom jakości usług i pomocy w chmurze
Identity Platform jest oparta na zaufanej infrastrukturze Google i zapewnia gwarancje jakości usług oraz pomoc Google Cloud. Oznacza to, że możesz skalować swoją usługę z pewnością i polegać na Google w zakresie odporności, dostępności i skalowalności.
Dostęp do wszystkich funkcji Firebase
Firebase to platforma mobilna, dzięki której możesz 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 infrastrukturę do obsługi: statystyk mobilnych, przesyłania wiadomości 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 procesy interfejsu użytkownika na podstawie najnowszych badań UX 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. Usługa integruje się z funkcją Smart Lock na hasła na Androida, co znacznie zwiększyło współczynnik konwersji logowania i rejestracji w uczestniczących aplikacjach. Obsługuje też łatwe modyfikacje motywów, aby dopasować je do aplikacji. W celu zapewnienia maksymalnej możliwości dostosowania wersje na Android i iOS zostały udostępnione jako oprogramowanie open source.
Uproszczona konfiguracja serwera
W przypadku Identity Toolkit zauważyliśmy, że wielu deweloperów nie decydowało się na wdrożenie procesu odzyskiwania adresu e-mail, co uniemożliwiało użytkownikom odzyskanie konta w przypadku zapomnienia hasła. Identity Platform może wysyłać do użytkownika e-maile z potwierdzeniem adresu e-mail, resetowaniem hasła i zmianą hasła. Tekst można łatwo dostosować do potrzeb użytkowników. Dodatkowo nie musisz już hostować widżetów interfejsu użytkownika na potrzeby hostowania przekierowań i wykonywania 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, sieć). Deweloperzy będą mogli logować i rejestrować starych i nowych użytkowników, uzyskiwać dostęp do właściwości użytkowników, łą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 korzystania z 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 używa usługi backendu, która pobiera token odświeżania wygenerowany na podstawie zdarzenia uwierzytelniania i wymienia go na tokeny dostępu na Androida, iOS i JavaScript o godzinnej ważności. 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 ponownego uwierzytelnienia użytkownika na tym urządzeniu.
Różnice w funkcjach
Niektóre funkcje Identity Toolkit nie są obecnie dostę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 migrować od razu. W wielu przypadkach te funkcje mogą nie być ważne dla Twojej aplikacji lub mogą istnieć łatwe rozwiązania zastępcze, które umożliwią Ci kontynuowanie migracji.
Różnice po stronie serwera
Podstawowa usługa Identity Toolkit z jej podstawowymi interfejsami API typu REST, logiką weryfikacji konta i główną bazą danych użytkowników przeszła tylko drobne aktualizacje. Zmieniły się jednak niektóre funkcje i sposób integracji Identity Platform z Twoją usługą.
Dostawcy tożsamości
Usługi Paypal i AOL nie są obsługiwane. Użytkownicy z kontami od tych dostawców tożsamości mogą nadal 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 Admin SDK w językach Java, Node.js, Python, Go i C#.
E-maile dotyczące zarządzania kontem
Resetowanie hasła, weryfikacja adresu e-mail i wiadomości o zmianie adresu e-mail mogą być wykonywane przez Firebase lub z własnego serwera poczty dewelopera. Obecnie szablony e-maili oferują tylko ograniczone możliwości dostosowania w interfejsie, ale można je dodatkowo dostosować za pomocą pakietów Admin SDK
Potwierdzenie zmiany adresu e-mail
W Identity Toolkit, gdy użytkownik zdecyduje się zmienić adres e-mail, wysyłany jest e-mail na nowy adres z linkiem umożliwiającym kontynuowanie procesu zmiany adresu e-mail.
Firebase potwierdza zmianę adresu e-mail, wysyłając e-maila z odwołaniem na stary adres e-mail z linkiem umożliwiającym przywrócenie zmiany.
Wdrażanie dostawcy tożsamości
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 prośby o pomoc. Ta funkcja została usunięta w Uwierzytelnianiu Firebase.
Różnice po stronie klienta
W Identity Platform funkcje udostępniane przez 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 procesy interfejsu użytkownika, które zarządzają logowaniem, rejestracją, odzyskiwaniem hasła i łączeniem kont, zostały przebudowane za pomocą pakietów SDK klienta i spakowane jako widżet logowania. Są one dostępne jako pakiety SDK open source na iOS, Android i sieć, co umożliwia pełne dostosowanie procesów w sposób, który nie jest możliwy w przypadku Identity Toolkit.
Inne różnice:
Sesje i migracja
Ponieważ sesje są zarządzane inaczej w Identity Toolkit i Identity Platform, istniejące sesje użytkowników zostaną zakończone po uaktualnieniu pakietu SDK, a użytkownicy będą musieli zalogować się ponownie.
Zanim zaczniesz
Zanim będzie można przeprowadzić migrację z Identity Toolkit do Identity Platform, musisz:
Otwórz konsolę Cloud i wybierz swój projekt Identity Toolkit.
W Marketplace znajdź Identity Platform i kliknij „Włącz Identity Platform”.
Otwórz stronę Konta usługi. Tutaj możesz zobaczyć konto usługi, które zostało wcześniej skonfigurowane na potrzeby Identity Toolkit.
Obok konta usługi kliknij more_vert > Utwórz klucz. Następnie w oknie Utwórz klucz prywatny 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. Możesz wtedy dostosować szablony aplikacji.
W Identity Toolkit, gdy użytkownicy resetowali hasła, zmieniali adresy e-mail lub potwierdzali adresy e-mail, trzeba było 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 szablonów bez konieczności wykonywania dodatkowych działań.
Opcjonalnie: jeśli musisz uzyskać dostęp do usług Identity Platform na serwerze, zainstaluj pakiet SDK Firebase.
Pakiet Admin SDK Node.js możesz zainstalować za pomocą
npm:$ npm init $ npm install --save firebase-adminW kodzie możesz uzyskać dostęp do Firebase za pomocą:
var admin = require('firebase-admin'); var app = admin.initializeApp({ credential: admin.credential.cert('path/to/serviceAccountCredentials.json') });
Następnie wykonaj czynności migracji na platformie aplikacji: Android, iOS, sieć.
Serwery i JavaScript
Ważne zmiany
W implementacji Identity Platform w sieci występuje kilka dodatkowych różnic w porównaniu z Identity Toolkit.
Zarządzanie sesjami w sieci
Wcześniej, gdy użytkownik uwierzytelniał się za pomocą widżetu Identity Toolkit, ustawiany był plik cookie, który służył do uruchamiania sesji. Ten plik cookie był ważny przez 2 tygodnie i umożliwiał użytkownikowi korzystanie z 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 innych żądań stron w witrynie. Inne witryny używały pliku cookie do tworzenia własnych plików cookie za pomocą systemu zarządzania plikami cookie w ramach swojej struktury.
Pakiety SDK klienta Identity Platform zarządzają teraz tokenami identyfikatorów i współpracują z backendem Identity Platform, aby utrzymać sesję w stanie świeżości. Backend wygasza sesje, gdy wystąpią ważne zmiany na koncie (np. zmiana hasła użytkownika). Tokeny identyfikatorów nie są automatycznie ustawiane jako pliki cookie w kliencie internetowym i są ważne tylko przez godzinę. Jeśli nie chcesz, aby sesje trwały tylko godzinę, tokeny identyfikatorów nie są odpowiednie do używania jako pliki cookie do weryfikowania wszystkich żądań stron. Zamiast tego musisz skonfigurować odbiornik, który będzie nasłuchiwał, gdy użytkownik się zaloguje, pobierze token identyfikatora, zweryfikuje go i utworzy własny plik cookie za pomocą systemu zarządzania plikami cookie w ramach swojej struktury.
Musisz ustawić czas trwania sesji pliku cookie na podstawie wymagań bezpieczeństwa aplikacji.
Proces logowania w sieci
Wcześniej, gdy inicjowano logowanie, użytkownicy byli przekierowywani na stronę
accountchooser.com, aby dowiedzieć się, jakiego identyfikatora chcą użyć. Proces interfejsu Identity Platform rozpoczyna się teraz od listy metod logowania, w tym opcji e-mail , która w przypadku sieci przekierowuje na stronęaccountchooser.com, a w przypadku Androida używa interfejsu hintRequest API. Adresy e-mail nie są już wymagane w interfejsie. Ułatwi to obsługę użytkowników anonimowych, użytkowników z niestandardowym uwierzytelnianiem lub użytkowników od dostawców, w przypadku których adresy e-mail nie są wymagane.Widżet zarządzania kontem
Ten widżet udostępnia użytkownikom interfejs umożliwiający zmianę adresów e-mail, haseł lub odłączanie kont od dostawców tożsamości. Jest obecnie w fazie rozwoju.
Przycisk/widżet logowania
Widżety takie jak przycisk logowania i karta użytkownika nie są już udostępniane. Można je łatwo utworzyć za pomocą interfejsu Uwierzytelnianie Firebase API.
Brak signOutUrl
Musisz wywołać
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żywa stylów Material Design Lite, które dynamicznie dodają 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 sieci, musisz przekonwertować serwer, 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 token identyfikatora Firebase do tego punktu końcowego.
- Jeśli żądanie przychodzące zawiera Twój własny plik cookie sesji, możesz uznać użytkownika za uwierzytelnionego. W przeciwnym razie traktuj żądanie jako nieuwierzytelnione.
- Jeśli nie chcesz, aby żaden z Twoich użytkowników utracił istniejące sesje, poczekaj 2 tygodnie, aż wygasną wszystkie tokeny Identity Toolkit, lub wykonaj podwójną weryfikację tokena w aplikacji internetowej zgodnie z opisem w kroku 3 poniżej.
Następnie, ponieważ tokeny identyfikatorów różnią się od tokenów Identity Toolkit, musisz zaktualizować logikę weryfikacji tokena. Zainstaluj pakiet Admin SDK na serwerze lub, jeśli używasz języka nieobsługiwanego przez pakiet Admin SDK, pobierz bibliotekę weryfikacji tokena JWT dla swojego środowiska i prawidłowo zweryfikuj token.
Po wprowadzeniu powyższych aktualizacji 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 uaktualnić aplikację 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 Firebase SDK czy Identity Toolkit SDK. Jeśli masz tylko aplikację internetową, wszystkie nowe żądania uwierzytelniania zostaną przeniesione do Identity Platform, dlatego musisz używać tylko metod weryfikacji tokena identyfikatora.
Więcej informacji znajdziesz w dokumentacji interfejsu Web API.
Krok 2. Zaktualizuj kod HTML
Dodaj do aplikacji kod inicjujący:
- Otwórz projekt w konsoli Cloud.
- Na stronie dostawców kliknij Szczegóły konfiguracji aplikacji. Wyświetli się fragment kodu, który inicjuje Identity Platform.
- Skopiuj i wklej fragment kodu inicjującego na 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 Identity Toolkit SDK.
Jeśli do zarządzania sesjami używasz tokena identyfikatora Identity Toolkit, musisz wprowadzić te zmiany po stronie klienta:
Po pomyślnym zalogowaniu się w Identity Platform pobierz token identyfikatora, wywołując
firebase.auth().currentUser.getToken().Wyślij token identyfikatora na serwer backendu, zweryfikuj go i wygeneruj własny plik cookie sesji.
Nie polegaj wyłącznie na pliku cookie sesji podczas wykonywania poufnych operacji lub wysyłania uwierzytelnionych żądań edycji na serwer. Musisz zapewnić dodatkową ochronę przed fałszowaniem żądań z innej witryny (CSRF).
Jeśli Twoja struktura nie zapewnia ochrony przed CSRF, jednym ze sposobów zapobiegania atakom jest pobranie tokena identyfikatora dla zalogowanego użytkownika za pomocą
getToken()i dołączenie go do każdego żądania (plik cookie sesji zostanie też wysłany domyślnie). Następnie musisz zweryfikować ten token za pomocą pakietu Admin SDK oprócz sprawdzenia pliku cookie sesji, które zostało wykonane przez strukturę backendu. Utrudni to ataki CSRF, ponieważ token identyfikatora jest przechowywany tylko w pamięci internetowej, a nie w pliku cookie.Tokeny Identity Toolkit są ważne przez 2 tygodnie. Możesz nadal generować tokeny, które są ważne przez 2 tygodnie, lub możesz wydłużyć lub skrócić ten czas na podstawie wymagań bezpieczeństwa aplikacji. Gdy użytkownik się wyloguje, wyczyść plik cookie sesji.
Krok 3. Zaktualizuj adresy URL przekierowania dostawcy tożsamości
W konsoli Cloud, 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 dewelopera dostawcy logowania zaktualizuj identyfikator 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 następnie kliknij Rozpocznij w Firebase. W oknie Dodaj Firebase podaj nazwę pakietu aplikacji i odcisk cyfrowy certyfikatu podpisywania, a następnie kliknij Dodaj aplikację. Plik konfiguracji jest następnie pobierany na Twój komputer.
google-services.jsonSkopiuj plik konfiguracji do katalogu głównego modułu aplikacji na Androida. Ten plik konfiguracji zawiera informacje o projekcie i kliencie Google OAuth.
W pliku
build.gradlena poziomie projektu (<var>your-project</var>/build.gradle) określ 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.gradle) dodaj 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 google-services używa pliku
google-services.jsondo konfigurowania aplikacji pod kątem używania Firebase.W pliku
build.gradlena poziomie aplikacji dodaj też zależność Uwierzytelniania Firebase:compile 'com.google.firebase:firebase-auth:24.1.0' compile 'com.google.android.gms:play-services-auth:21.5.1'
Krok 2. Usuń pakiet Identity Toolkit SDK
- 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 Identity Toolkit SDK.
Krok 3. Dodaj do aplikacji FirebaseUI
Dodaj FirebaseUI Auth do aplikacji.
W aplikacji zastąp wywołania pakietu Identity Toolkit SDK wywołaniami FirebaseUI.
iOS
Krok 1. Dodaj Firebase do aplikacji
Dodaj do aplikacji pakiet SDK klienta, 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 następnie kliknij Rozpocznij w Firebase. W oknie Dodaj Firebase, podaj nazwę pakietu aplikacji i odcisk cyfrowy certyfikatu podpisywania, a następnie kliknij Dodaj aplikację. Plik konfiguracyjny
google-services.jsonjest następnie pobierany na Twój komputer. W oknie Dodaj Firebase podaj identyfikator pakietu aplikacji i identyfikator App Store, a następnie kliknij Dodaj aplikację. Plik konfiguracjiGoogleService-Info.plistzostanie pobrany na Twój komputer. Jeśli w projekcie masz kilka identyfikatorów pakietów, każdy z nich musi być połączony w konsoli Firebase, aby mógł 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 Identity Toolkit SDK
- Usuń
GoogleIdentityToolkitz pliku Podfile aplikacji. - Uruchom polecenie
pod install.
Krok 3. Dodaj do aplikacji FirebaseUI
Dodaj FirebaseUI Auth do aplikacji.
W aplikacji zastąp wywołania pakietu Identity Toolkit SDK wywołaniami FirebaseUI.