Jeśli nie znasz jeszcze usług tożsamości lub autoryzacji Google, zapoznaj się z artykułem Omówienie.
Google udostępnia bibliotekę JavaScript, która zawiera funkcje autoryzacji ułatwiające zarządzanie zakresami, uzyskiwanie zgody użytkownika oraz łatwiejsze korzystanie ze standardowych przepływów OAuth 2.0. Twoja aplikacja internetowa działająca w przeglądarce użytkownika wykorzystuje tę bibliotekę do zarządzania niejawnym przepływem OAuth 2.0 lub uruchamianie procesu kodu autoryzacji, który kończy się na platformie backendu.
Zakresy tylko uwierzytelniania
Do uwierzytelniania użytkowników używanych jest tylko kilka zakresów: email
, profile
i openid
. Jeśli Twoja aplikacja korzysta tylko z tych zakresów, zastanów się, czy token JWT i Logowanie przez Google na potrzeby rejestracji i logowania użytkownika spełniają Twoje potrzeby. W większości przypadków jest to najprostsza i najprostsza metoda uwierzytelniania użytkowników.
Najważniejsze pojęcia i pojęcia
W tych przewodnikach przyjęto założenie, że masz podstawową wiedzę na temat pojęć OAuth 2.0 i standardów IETF, takich jak RFC6749. W przewodnikach dotyczących autoryzacji używane są następujące terminy:
- Token dostępu jest ważny przez krótki okres ważności poszczególnych danych logowania wydanych przez Google. Służy do bezpiecznego wywoływania interfejsów API Google i uzyskiwania dostępu do danych użytkowników.
- Kod autoryzacji to tymczasowy kod generowany przez Google, który umożliwia bezpieczne identyfikowanie poszczególnych użytkowników, którzy logują się na swoje konta Google w przeglądarce. Platforma backendu wymienia ten kod na potrzeby dostępu i tokenów odświeżania.
- Token odświeżania jest dokumentem tożsamości użytkownika, który jest bezpiecznie przechowywany na Twojej platformie od dłuższego czasu i może służyć do uzyskania nowego, prawidłowego tokena dostępu, nawet jeśli danego użytkownika nie ma w jego obrębie.
- Zakres ogranicza tokeny do określonej i ograniczonej ilości danych użytkownika. Więcej informacji znajdziesz w artykule Zakresy OAuth 2.0 dla interfejsów API Google.
- Tryb wyskakującego okienka to proces autoryzacji kodu oparty na wywołaniu zwrotnym JavaScriptu w przeglądarce użytkownika. Google wywołuje Twoją metodę wywołania zwrotnego, która odpowiada za wysłanie kodu uwierzytelniania na Twoją platformę. To, jak to zrobisz, zależy od Ciebie.
- Tryb przekierowania to kod autoryzacji oparty na przekierowaniach HTTP. Klient użytkownika jest najpierw przekierowywany do Google, a drugi – do Google, do punktu końcowego kodu autoryzacji Twojej platformy.
Czasy ważności tokenów ustawia Google jako wydawca. Dokładny czas trwania może się różnić z powodu różnych czynników.
Przepływy OAuth 2.0
Omówione są 2 procesy: niejawne i kod autoryzacji. Oba typy zwracają token dostępu odpowiedni do użycia z interfejsami API Google.
Zalecamy skorzystanie z kodu autoryzacji, ponieważ zapewnia on większe bezpieczeństwo użytkowników. Zwraca też token odświeżania, który pozwala uzyskać tokeny dostępu bez obecności użytkownika. Dzięki temu Twoja platforma może łatwiej wykonywać asynchroniczne działania, takie jak wysyłanie SMS-ów z przypomnieniem o zbliżającym się spotkaniu, które zostało zaplanowane na ostatnią minutę. Wybierz model autoryzacji, aby dokładniej wyjaśnić różnice między tymi 2 procesami.
Biblioteka JavaScript usług tożsamości Google jest zgodna ze standardem OAuth 2.0, aby:
- zarządzaj przepływem pośrednim, aby umożliwić aplikacji internetowej w przeglądarce szybkie i łatwe uzyskanie tokena dostępu Google, który jest niezbędny do wywoływania interfejsów API Google.
- uruchom kod autoryzacji w przeglądarce użytkownika.
Typowe czynności
Proces domyślnie i kodu autoryzacji rozpoczyna się w ten sam sposób:
- Aplikacja prosi o dostęp do co najmniej 1 zakresu.
- Google wyświetla użytkownikowi okno z prośbą o zgodę na wykorzystanie danych. W razie potrzeby najpierw loguje się na konto Google.
- Użytkownik indywidualnie zatwierdza każdy żądany zakres.
Każdy proces kończy się innym krokiem.
Podczas korzystania z przepływu niejawnego
- Google używa modułu obsługi wywołania zwrotnego w celu powiadomienia aplikacji o wyniku zgody i zwrócenie tokena dostępu dla dowolnego zatwierdzonego zakresu.
Podczas korzystania z kodu autoryzacji
- Google przekazuje kod autoryzacji konkretnego użytkownika:
- W trybie przekierowania kod jest zwracany do punktu końcowego kodu autoryzacji platformy.
- W trybie wyskakującym kod jest zwracany do modułu wywołania zwrotnego aplikacji w przeglądarce bez potrzeby opuszczania witryny.
- Zaczynając od Kroku 4. Obsługuj odpowiedź serwera OAuth 2.0. Twoja platforma backendu realizuje w trybie serwer–serwer wymianę danych z Google, czego efektem jest zwracanie przez użytkownika tokena odświeżania i dostępu użytkownika na Twoją platformę.
Zgoda użytkownika
Przed uzyskaniem tokena dostępu użytkownicy muszą wyrazić zgodę na dostęp aplikacji do żądanych zakresów. W tym celu w kroku 2 powyżej Google wyświetla okno z prośbą o zgodę na przetwarzanie danych osobowych i rejestruje wynik na stronie myaccount.google.com/permissions.
Nazwa aplikacji, logo, polityka prywatności, warunki korzystania z usługi i wybrane zakresy są wyświetlane użytkownikowi wraz z opcją zatwierdzenia lub anulowania prośby.
Na rysunku 1 widać okno dialogowe zgody dla pojedynczego zakresu. Gdy wymagany jest jeden zakres, pola wyboru nie są potrzebne do zatwierdzania lub odrzucania zakresu.
Ilustracja 1. Okno z prośbą o zgodę użytkownika na przetwarzanie danych z jednym zakresem
Na rysunku 2 wyświetla się okno wyrażania zgody dla wielu zakresów. Gdy użytkownik prosi o więcej niż 1 zakres, wymagane są poszczególne pola wyboru, aby użytkownik mógł zatwierdzić lub odrzucić każdy zakres.
Ilustracja 2. Okno z prośbą o zgodę użytkownika z wieloma zakresami
Konta użytkowników
Do zarejestrowania zgody i wystawienia tokena dostępu wymagane jest konto Google. Wcześniej użytkownicy musieli uwierzytelnić się w Google, logując się na konto Google.
Chociaż nie jest to wymagane, zalecamy korzystanie z funkcji Zaloguj się przez Google na potrzeby rejestracji w aplikacji internetowej lub na platformie backendu. Dzięki temu liczba czynności wykonywanych przez użytkowników jest prostsza, a Ty minimalizujesz liczbę wymaganych czynności i możesz łatwo powiązać tokeny dostępu z poszczególnymi kontami na platformie.
Na przykład użycie funkcji Zaloguj się przez Google powoduje utworzenie aktywnej sesji konta Google, dzięki czemu użytkownik nie musi później prosić o zalogowanie się na konto Google podczas wysyłania żądania autoryzacji. Jeśli zdecydujesz się na uwierzytelnianie użytkowników w aplikacji w inny sposób, np. przez podanie nazwy użytkownika i hasła, lub za pomocą innych dostawców tożsamości, będą oni musieli najpierw zalogować się na konto Google.
Dodanie wskazówki logowania podczas inicjowania autoryzacji – zwykle adresu e-mail konta Google użytkownika – umożliwia Google pomijanie wyświetlania selektora kont, oszczędzając użytkownikom krok. Dane uwierzytelniające tokena tożsamości zwracane przez funkcję Zaloguj się przez Google zawierają adres e-mail użytkownika.
Aplikacje internetowe działające tylko w przeglądarce mogą polegać wyłącznie na Google na potrzeby uwierzytelniania użytkowników, nie wybierając systemu zarządzania kontami użytkowników. W tym scenariuszu, znanym jako przepływ domyślny, nie ma potrzeby kojarzenia tokena odświeżania z kontem użytkownika i bezpiecznym miejscem na dane zarządzania.
System autoryzacji może też wymagać systemu kont użytkowników. Tokeny odświeżania na użytkownika muszą być powiązane z indywidualnym kontem na platformie backendu i przechowywane do późniejszego użycia. Wdrażanie i obsługa systemu kont użytkowników oraz zarządzanie nimi jest unikalne dla Twojej platformy i nie omawia się ich szczegółowo.
Wyświetlanie i cofanie zgody
Użytkownicy mogą w każdej chwili wyświetlić lub wycofać swoją zgodę w ustawieniach swojego konta Google.
Opcjonalnie aplikacja internetowa lub platforma internetowa może wywoływać google.accounts.oauth2.revoke
, aby unieważnić tokeny i usunąć zgodę użytkownika. Jest to przydatne, gdy użytkownik usuwa swoje konto z platformy.
Inne opcje autoryzacji
Przeglądarki mogą też uzyskać tokeny dostępu za pomocą pośredniego przepływu, wywołując bezpośrednio punkty końcowe Google OAuth 2.0 zgodnie z opisem w sekcji Protokół OAuth 2.0 dla aplikacji internetowych po stronie klienta.
Podobnie w przypadku kodu autoryzacji możesz wdrożyć własne metody i postępować zgodnie z instrukcjami podanymi w artykule Korzystanie z protokołu OAuth 2.0 w aplikacjach serwera WWW.
W obu przypadkach zdecydowanie zalecamy korzystanie z biblioteki usług tożsamości Google, aby skrócić czas potrzebny na programowanie i zmniejszyć nakład pracy oraz zminimalizować ryzyko związane z bezpieczeństwem, takie jak opisane w artykule Sprawdzone metody zabezpieczania protokołu OAuth 2.0.