Jak działa autoryzacja użytkownika

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Jeśli nie masz doświadczenia w korzystaniu z usług tożsamości Google lub nie wiesz, jak je autoryzować, zapoznaj się z omówieniem.

Google udostępnia bibliotekę JavaScript, która zawiera funkcje autoryzacji ułatwiające zarządzanie zakresami oraz uzyskiwanie zgody użytkownika na wykorzystanie danych i ł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 protokołu OAuth 2.0 lub do rozpoczęcia procesu autoryzacji, który kończy się na platformie backendu.

Zakresy tylko uwierzytelniania

Kilka zakresów jest używanych tylko do uwierzytelniania użytkowników: email, profile i openid. Jeśli aplikacja używa tylko tych zakresów, zastanów się, czy token identyfikatora JWT i logowanie z Google na potrzeby rejestracji użytkownika i logowania się spełnią Twoje wymagania. W większości przypadków jest to najprostsza i najbardziej prosta metoda dostępna do uwierzytelniania użytkowników.

Kluczowe terminy i koncepcje

W tych przewodnikach przyjęto założenie, że znasz podstawowe pojęcia związane z protokołem OAuth 2.0 i standardami IETF, takimi jak RFC6749. W przewodnikach po autoryzacji są używane te terminy:

  • Token dostępu to krótkotrwałe dane logowania użytkownika wydane przez Google, które są używane do bezpiecznego wywoływania interfejsów API Google i uzyskiwania dostępu do danych użytkownika.
  • Kod autoryzacji to tymczasowy kod wydawany przez Google do bezpiecznego identyfikowania 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 to długotrwałe dane logowania każdego użytkownika wystawione przez Google, które są bezpiecznie przechowywane na Twojej platformie i można ich użyć do uzyskania nowego, prawidłowego tokena dostępu, nawet jeśli nie ma użytkownika.
  • Zakres ogranicza tokeny do zdefiniowanej i ograniczonej ilości danych użytkownika. Więcej informacji znajdziesz w artykule Zakresy OAuth 2.0 na potrzeby interfejsów API Google.
  • Tryb wyskakujących okienek to przepływ kodu autoryzacji na podstawie wywołania zwrotnego JavaScriptu uruchomionego w przeglądarce użytkownika. Google wywołuje Twoją procedurę obsługi wywołania zwrotnego, która odpowiada za wysłanie kodu uwierzytelniania do Twojej platformy. Wybór należy do Ciebie.
  • Tryb przekierowania to proces autoryzacji kodu oparty na przekierowaniach HTTP. Klient użytkownika zostaje najpierw przekierowany do Google, a drugie do Google z Twoją platformą przez punkt końcowy kodu autoryzacji.

Okresy ważności tokenów ustawia Google jako wydawca. Ze względu na różne czynniki dokładny czas trwania może być różny.

Przepływy OAuth 2.0

Omówione są 2 procesy: niejawny i kod autoryzacji. Obie usługi zwracają token dostępu odpowiedni do użycia z interfejsami API Google.

Zalecamy stosowanie kodu autoryzacji, ponieważ zapewnia on większe bezpieczeństwo użytkowników. Ten proces zwraca też token odświeżania, który może zostać wykorzystany do uzyskania tokenów dostępu bez obecności użytkownika, co umożliwia platformie wykonywanie działań asynchronicznych, takich jak wysyłanie SMS-ów z informacją o zbliżającym się spotkaniu, które zostało zaplanowane na ostatnią minutę. Dokładniejsze omówienie różnic między tymi 2 procesami znajdziesz w sekcji Wybierz model autoryzacji.

Biblioteka JavaScript usług tożsamości Google jest zgodna ze standardem OAuth 2.0, aby:

  • zarządzać przepływem niejawnym, by 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 z przeglądarki użytkownika;

Typowe czynności

Proces niejawny i autoryzacyjny rozpoczyna się tak samo:

  1. Aplikacja prosi o dostęp do co najmniej jednego zakresu.
  2. Google wyświetla użytkownikowi okno z prośbą o zgodę na wykorzystanie danych i w razie potrzeby najpierw loguje go na konto Google.
  3. Użytkownik zatwierdza każdy żądany zakres.

Każdy proces kończy się innymi krokami.

W przypadku niejawnych przepływów

  • Google używa procedury wywołania zwrotnego do powiadamiania aplikacji o wyniku zgody i zwraca token dostępu dla wszystkich zatwierdzonych zakresów.

Podczas korzystania z kodu autoryzacji

  • W odpowiedzi Google przesyła kod autoryzacji do każdego 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 konieczności opuszczania witryny.
  • Począwszy od kroku 4. Przetwórz odpowiedź OAuth 2.0 na serwer, ponieważ platforma backendu realizuje wymianę serwer-serwer z Google. W rezultacie dostajemy token odświeżania na użytkownika oraz zwracany na Twoją platformę token dostępu.

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 zgody i rejestruje wynik na stronie myaccount.google.com/permissions.

Nazwa aplikacji, logo, polityka prywatności, warunki korzystania z usługi i zakresy są wyświetlane użytkownikowi wraz z opcją zatwierdzenia lub anulowania prośby.

Na rysunku 1 wyświetla się okno uzyskiwania zgody dla pojedynczego zakresu. Gdy jest wymagany jeden zakres, żadne pola wyboru nie są potrzebne, aby zatwierdzić lub odrzucić zakres.

Okno z prośbą o zgodę użytkownika z przyciskami Anuluj lub Dalej i jednym zakresem, nie są zaznaczone.

Rysunek 1. Okno zgody użytkownika z jednym zakresem.

Na rysunku 2 wyświetla się okno z prośbą o zgodę w przypadku wielu zakresów. Jeśli 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.

Okno z prośbą o zgodę użytkownika na wykorzystanie danych z przyciskami Anuluj i Dalej oraz wieloma zakresami. Każdy zakres ma selektor wyboru.

Rysunek 2. Okno zgody 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, do rejestracji i logowania się w aplikacji internetowej lub na platformie backendu zalecamy użycie funkcji Zaloguj się przez Google. Dzięki temu zmniejszy się liczba wymaganych czynności i opcjonalnie będzie można łatwo powiązać tokeny dostępu z poszczególnymi kontami na platformie.

Na przykład użycie opcji Zaloguj się przez Google powoduje utworzenie aktywnej sesji konta Google, dzięki czemu nie trzeba później prosić użytkownika o zalogowanie się na konto Google podczas wysyłania żądania autoryzacji. Jeśli zdecydujesz się uwierzytelniać użytkowników aplikacji za pomocą innych metod, np. nazwy użytkownika i hasła, lub innych dostawców tożsamości, nadal będą oni musieli najpierw zalogować się na konto Google.

Dodanie wskazówki podczas inicjowania autoryzacji (zwykle adresu e-mail konta Google użytkownika) pozwala Google pomijać wybór konta, oszczędzając tym samym krok użytkownikom. Dane logowania tokena tożsamości zwrócone przez funkcję Zaloguj się przez Google zawierają adres e-mail użytkownika.

Aplikacje internetowe działające wyłącznie w przeglądarce mogą polegać wyłącznie na uwierzytelnianiu użytkowników przez Google. W takim przypadku system nie będzie implementował systemu zarządzania kontem użytkownika. W tym scenariuszu, nazywanym schematem niejawnym, nie trzeba wiązać tokena odświeżania z kontem użytkownika ani bezpiecznego miejsca na dane.

System kont użytkowników może też wymagać procedury kodu autoryzacji. Tokeny odświeżania na użytkownika muszą być powiązane z indywidualnym kontem na platformie backendu i przechowywane na później. Wdrażanie i zarządzanie systemem kont użytkowników oraz zarządzanie nimi jest unikalne dla Twojej platformy i nie zostało szczegółowo opisane.

Użytkownicy mogą w dowolnym momencie wyświetlić lub odwołać zgodę w ustawieniach konta Google.

Opcjonalnie aplikacja internetowa lub platforma może wywołać metodę google.accounts.oauth2.revoke, by unieważnić tokeny i usunąć zgodę użytkownika. Jest to przydatne, gdy użytkownik usuwa swoje konto z Twojej platformy.

Inne opcje autoryzacji

Przeglądarki mogą też uzyskać tokeny dostępu przy użyciu niejawnego przepływu, wywołując bezpośrednio punkty końcowe OAuth 2.0 Google zgodnie z opisem w sekcji OAuth 2.0 dla aplikacji internetowych po stronie klienta.

Analogicznie w przypadku procesu autoryzacji możesz wdrożyć własne metody i wykonać kroki opisane w artykule Korzystanie z OAuth 2.0 na potrzeby aplikacji serwera WWW.

W obu przypadkach zalecamy skorzystanie z biblioteki usług tożsamości Google, aby skrócić czas tworzenia i zmniejszyć koszty oraz ograniczyć do minimum czynniki bezpieczeństwa, takie jak te zgodne ze sprawdzonymi metodami dotyczącymi bezpieczeństwa OAuth 2.0.