Jak działa autoryzacja użytkownika

Jeśli nie masz doświadczenia z usługami tożsamości Google lub autoryzacją, zapoznaj się najpierw z omówieniem.

Google udostępnia bibliotekę JavaScript zawierającą funkcje autoryzacji, które ułatwiają zarządzanie zakresami, uzyskiwanie zgody użytkowników i łatwiejsze korzystanie ze standardowych procesów OAuth 2.0. Twoja aplikacja internetowa działająca w przeglądarce użytkownika korzysta z tej biblioteki do zarządzania niejawnym przepływem danych OAuth 2.0 lub do uruchamiania przepływu kodu autoryzacji, który kończy się na platformie backendu.

Zakresy tylko do uwierzytelniania

Do uwierzytelniania użytkowników służy tylko kilka zakresów: email, profile i openid. Jeśli Twoja aplikacja używa tylko tych zakresów, zastanów się, czy token identyfikatora JWT i funkcja Zaloguj się przez Google służą do rejestracji i logowania użytkowników. W większości przypadków jest to najprostsza i najprostsza metoda uwierzytelniania użytkowników.

Kluczowe terminy i koncepcje

Zakładamy w nich, że masz podstawową wiedzę na temat protokołu OAuth 2.0 i standardów IETF, takich jak RFC6749. Poniższe terminy używane są w przewodnikach dotyczących autoryzacji:

  • Token dostępu to ważne przez Google dane logowania użytkownika, które są wydawane przez Google i używane do bezpiecznego wywoływania interfejsów API Google i uzyskiwania dostępu do danych użytkownika.
  • Kod autoryzacji to tymczasowy kod wydany przez Google, który umożliwia bezpieczną identyfikację poszczególnych użytkowników logujących się na swoje konto Google w przeglądarce. Platforma backendu wymienia ten kod na tokeny dostępu i odświeżania.
  • Token odświeżania to ważne dane logowania użytkownika wystawiane przez Google. Są one bezpiecznie przechowywane na platformie i można ich używać do uzyskania nowego, prawidłowego tokena dostępu nawet w przypadku nieobecności użytkownika.
  • Zakres ogranicza tokeny do zdefiniowanej 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 przepływ kodu autoryzacji na podstawie wywołania zwrotnego JavaScript uruchomionego w przeglądarce użytkownika. Google wywołuje moduł obsługi wywołania zwrotnego, który odpowiada za wysłanie kodu autoryzacji do Twojej platformy. Sposób, w jaki to zrobisz, zależy tylko od Ciebie.
  • Tryb przekierowania to przepływ kodu autoryzacji na podstawie przekierowań HTTP. Klient użytkownika jest najpierw przekierowywany do Google. Drugie przekierowanie z Google do punktu końcowego kodu autoryzacji platformy zawiera kod.

Czasy życia tokena są ustawiane przez Google jako wydawcę. Dokładny czas trwania może się różnić z uwagi na różne czynniki.

Przepływy OAuth 2.0

Omówiono 2 przepływy: kod niejawny i kod autoryzacji. Oba zwracają token dostępu odpowiedni do stosowania z interfejsami API Google.

Zalecamy stosowanie przepływu kodu autoryzacji, ponieważ zapewnia on większe bezpieczeństwo użytkowników. Ten proces zwraca także token odświeżania, którego można użyć do uzyskania tokenów dostępu bez obecności użytkownika. Dzięki temu platforma może łatwiej wykonywać działania asynchroniczne, takie jak wysyłanie SMS-ów z przypomnieniem o zbliżającym się spotkaniu zaplanowanym w ostatniej minucie. W artykule Wybierz model autoryzacji znajdziesz bardziej szczegółowe wyjaśnienie różnic między tymi dwoma przepływami.

Biblioteka JavaScript usług Google Identity jest zgodna ze standardem OAuth 2.0, aby:

  • zarządzać procesem implicit, aby umożliwić Twojej aplikacji internetowej w przeglądarce szybkie i łatwe uzyskanie od Google tokena dostępu niezbędnego do wywoływania interfejsów API Google.
  • uruchomić przepływ kodu autoryzacji w przeglądarce użytkownika.

Typowe czynności

Przepływ kodu niejawnego i kodu autoryzacji rozpoczyna się w ten sam sposób:

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

Każdy proces kończy się innym etapem.

Podczas korzystania z przepływu niejawnego

  • Google używa modułu obsługi wywołania zwrotnego, aby powiadomić aplikację o wyniku zgody i zwrócić token dostępu dla wszystkich zatwierdzonych zakresów.

Podczas korzystania z przepływu kodu autoryzacji

  • W odpowiedzi Google przesyła kod autoryzacji każdego użytkownika:
    • W trybie przekierowania kod jest zwracany do punktu końcowego kodu autoryzacji platformy.
    • W trybie wyskakującego okienka kod jest zwracany do modułu obsługi wywołań zwrotnych aplikacji w przeglądarce, dzięki czemu użytkownicy nie muszą jej opuszczać.
  • Od kroku 4. Przetwórz odpowiedź serwera OAuth 2.0 Twoja platforma backendu kończy wymianę między serwerami z Google, co skutkuje zwróceniem na Twoją platformę tokena odświeżania każdego użytkownika i tokena 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 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 żądane zakresy są wyświetlane użytkownikowi wraz z opcją zaakceptowania lub anulowania prośby.

Na ilustracji 1 przedstawione jest okno z prośbą o zgodę na przetwarzanie danych dla pojedynczego zakresu. W przypadku wysłania żądania dotyczącego pojedynczego zakresu nie są wymagane żadne pola wyboru do zatwierdzania ani odrzucania zakresu.

Okno z prośbą o zgodę użytkownika na wykorzystanie danych z przyciskami Anuluj lub Dalej i jednym zakresem, bez pól wyboru.

Rysunek 1. Okno z prośbą o zgodę użytkownika na wykorzystanie danych w jednym zakresie

Na ilustracji 2 widoczne jest okno z prośbą o zgodę na przetwarzanie danych dla wielu zakresów. Jeśli wymagane jest więcej niż 1 zakres, poszczególne pola wyboru są wymagane, 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 lub Dalej i wieloma zakresami. Każdy zakres ma selektor pola wyboru.

Rysunek 2. Okno z prośbą o zgodę użytkownika na wykorzystanie danych z wieloma zakresami

Konta użytkowników

Do zarejestrowania zgody i wydania tokena dostępu wymagane jest konto Google. Wcześniej poszczególni użytkownicy muszą uwierzytelnić się w Google, logując się na konto Google.

Chociaż nie jest to wymogiem, zalecamy używanie funkcji Zaloguj się przez Google na potrzeby rejestracji i logowania się w aplikacji internetowej lub na platformie backendu. Pozwala to zmniejszyć liczbę wymaganych kroków i zmniejsza obciążenie użytkowników, a opcjonalnie także umożliwia łatwe powiązanie tokenów dostępu z poszczególnymi kontami na platformie.

Na przykład użycie funkcji Zaloguj się przez Google powoduje uruchomienie sesji na koncie Google, dzięki czemu nie trzeba później prosić użytkownika o zalogowanie się na konto Google podczas wysyłania żądania autoryzacji. Nawet jeśli zdecydujesz się uwierzytelnić użytkowników w aplikacji w inny sposób, np. za pomocą nazwy użytkownika i hasła lub innych dostawców tożsamości, nadal będą oni musieli najpierw zalogować się na konto Google, aby uzyskać zgodę użytkowników.

Dodanie podpowiedzi logowania podczas inicjowania autoryzacji (zwykle adresu e-mail konta Google użytkownika) pozwala Google pominąć wyświetlanie opcji wyboru konta, co oszczędza użytkownikom dany krok. Dane uwierzytelniające tokena identyfikatora zwrócone 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 uwierzytelnianiach użytkowników przez Google, ale nie implementują systemu zarządzania kontami użytkowników. W tym scenariuszu, znanym jako przepływ niejawny, nie trzeba wiązać tokena odświeżania z kontem użytkownika i bezpiecznym miejscem zarządzania.

System kont użytkowników jest też wymagany przez przepływ kodu autoryzacji. Tokeny odświeżania na użytkownika muszą być powiązane z konkretnym kontem na platformie backendu i przechowywane do późniejszego użycia. Wdrażanie i obsługa systemu kont użytkowników oraz zarządzanie nim są dostępne tylko w przypadku Twojej platformy i nie zostały szczegółowo omówione.

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

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

Inne opcje autoryzacji

Przeglądarki mogą też uzyskiwać tokeny dostępu w ramach procesu niejawnego, bezpośrednio wywołując punkty końcowe protokołu Google OAuth 2.0 w sposób opisany w artykule Protokół OAuth 2.0 dla aplikacji internetowych po stronie klienta.

I podobnie w przypadku przepływu kodu autoryzacji możesz wdrożyć własne metody i wykonać czynności opisane w artykule Używanie OAuth 2.0 w aplikacjach udostępnianych przez serwer WWW.

W obu przypadkach zdecydowanie zalecamy korzystanie z biblioteki usług tożsamości Google, aby skrócić czas i nakłady pracy podczas programowania oraz zminimalizować zagrożenia dla bezpieczeństwa, takie jak to opisano w artykule Sprawdzone metody zapewniania bezpieczeństwa protokołu OAuth 2.0.