Jak działa autoryzacja użytkownika

Jeśli nie znasz usług Google Identity Services ani autoryzacji, zacznij od przeczytania omówienia.

Google udostępnia bibliotekę JavaScript, która zawiera funkcje autoryzacji ułatwiające zarządzanie zakresami, uzyskiwanie zgody użytkownika i upraszczanie pracy ze standardowymi przepływami OAuth 2.0. Twoja aplikacja internetowa działająca w przeglądarce użytkownika używa tej biblioteki do zarządzania przepływem niejawnym OAuth 2.0 lub do uruchamiania przepływu kodu autoryzacji, który kończy się na Twojej platformie backendowej.

Zakresy tylko do uwierzytelniania

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

Kluczowe terminy i pojęcia

Te przewodniki zakładają, że masz podstawową wiedzę na temat protokołu OAuth 2.0 i standardów IETF, takich jak RFC6749. W przewodnikach dotyczących autoryzacji używane są te terminy:

  • Token dostępu to krótkotrwałe dane logowania użytkownika wydawane przez Google, które służą do bezpiecznego wywoływania interfejsów API Google i uzyskiwania dostępu do danych użytkownika.
  • Kod autoryzacji to tymczasowy kod wydawany przez Google w celu bezpiecznego identyfikowania poszczególnych użytkowników, którzy logują się na swoje konto Google w przeglądarce. Twoja platforma backendowa wymienia ten kod na tokeny dostępu i odświeżania.
  • Token odświeżania to długotrwałe dane logowania użytkownika wydawane przez Google, które są bezpiecznie przechowywane na Twojej platformie i mogą służyć do uzyskiwania nowego, prawidłowego tokena dostępu nawet wtedy, gdy użytkownik nie jest obecny.
  • 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ący to przepływ kodu autoryzacji oparty na wywołaniu zwrotnym JavaScript działającym w przeglądarce użytkownika. Google wywołuje obsługę wywołania zwrotnego, która jest odpowiedzialna za wysłanie kodu autoryzacji na Twoją platformę. Sposób, w jaki to się odbywa, zależy od Ciebie.
  • Tryb przekierowania to przepływ kodu autoryzacji oparty na przekierowaniach HTTP. Najpierw agent użytkownika jest przekierowywany do Google, a drugie przekierowanie z Google do punktu końcowego kodu autoryzacji Twojej platformy zawiera kod.

Okresy ważności tokenów są ustawiane przez Google jako wystawcę. Dokładny czas trwania może się różnić z różnych powodów.

Przepływy OAuth 2.0

Omówione są 2 przepływy: niejawny i kodu autoryzacji. Oba zwracają token dostępu, który można używać z interfejsami API Google.

Zalecamy przepływ kodu autoryzacji, ponieważ zapewnia on większe bezpieczeństwo użytkownika. Ten przepływ zwraca też token odświeżania, którego można używać do uzyskiwania tokenów dostępu bez obecności użytkownika. Dzięki temu Twoja platforma może wykonywać działania asynchroniczne, takie jak wysyłanie SMS-a z przypomnieniem o zbliżającym się spotkaniu zaplanowanym w ostatniej chwili. Różnice między tymi 2 przepływami zostały szczegółowo opisane w artykule Wybieranie modelu autoryzacji.

Biblioteka JavaScript Google Identity Services jest zgodna ze standardem OAuth 2.0, aby:

Typowe kroki

Zarówno przepływ niejawny, jak i przepływ kodu autoryzacji zaczynają się tak samo:

  1. Twoja 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 konto Google.
  3. Użytkownik osobno zatwierdza każdy żądany zakres.

Każdy przepływ kończy się innymi krokami.

Korzystanie z przepływu niejawnego

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

Korzystanie z przepływu kodu autoryzacji

  • Google odpowiada kodem autoryzacji użytkownika:
    • W trybie przekierowania kod jest zwracany do punktu końcowego kodu autoryzacji Twojej platformy.
    • W trybie okna kod jest zwracany do obsługi wywołania zwrotnego aplikacji działającej w przeglądarce bez konieczności opuszczania przez użytkowników Twojej witryny.
  • Począwszy od kroku 4: Obsługa odpowiedzi serwera protokołu OAuth 2.0 Twoja platforma backendowa przeprowadza wymianę między serwerami z Google, co ostatecznie powoduje zwrócenie na Twoją platformę tokena odświeżania i tokena dostępu użytkownika.

Zanim użytkownicy uzyskają token dostępu, muszą wyrazić zgodę na dostęp Twojej aplikacji do żądanych zakresów. W tym celu Google wyświetla okno z prośbą o zgodę na przetwarzanie danych osobowych w kroku 2 i zapisuje wynik na myaccount.google.com/permissions.

Użytkownik widzi nazwę aplikacji, logo, politykę prywatności, warunki korzystania z usługi i żądane zakresy, a także opcję zatwierdzenia lub anulowania żądania.

Na rysunku 1 pokazano okno z prośbą o zgodę na przetwarzanie danych osobowych dla pojedynczego zakresu. Gdy żądany jest tylko 1 zakres, nie trzeba zaznaczać żadnych pól wyboru, aby zatwierdzić lub odrzucić zakres.

Wyświetla się okno z prośbą o zgodę na przetwarzanie danych osobowych z przyciskami Anuluj i Dalej oraz jednym zakresem bez pól wyboru.

Rysunek 1: okno z prośbą o zgodę na przetwarzanie danych osobowych z 1 zakresem.

Na rysunku 2 pokazano okno z prośbą o zgodę na przetwarzanie danych osobowych dla wielu zakresów. Gdy żądany jest więcej niż 1 zakres, użytkownik musi zaznaczyć odpowiednie pola wyboru, aby zatwierdzić lub odrzucić każdy zakres.

Okno z prośbą o zgodę na przetwarzanie danych osobowych z przyciskami Anuluj i Dalej oraz wieloma zakresami, z których każdy ma pole wyboru.

Rysunek 2: okno z prośbą o zgodę na przetwarzanie danych osobowych użytkownika z wieloma zakresami.

Konta użytkowników

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

Chociaż nie jest to wymagane, zalecamy używanie funkcji Zaloguj się przez Google do rejestracji i logowania w aplikacji internetowej lub na platformie backendowej. Dzięki temu zmniejszysz liczbę wymaganych kroków i opcjonalnie powiążesz tokeny dostępu z poszczególnymi kontami na swojej platformie.

Na przykład użycie funkcji Zaloguj się przez Google powoduje utworzenie aktywnej 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. Jeśli zdecydujesz się uwierzytelniać użytkowników w swojej aplikacji za pomocą innych metod, takich jak nazwa użytkownika i hasło lub inni dostawcy tożsamości, użytkownicy nadal będą musieli najpierw zalogować się na konto Google, aby wyrazić zgodę.

Dodanie podpowiedzi logowania podczas inicjowania autoryzacji – zwykle adresu e-mail konta Google użytkownika – umożliwia Google pominięcie wyświetlania selektora konta, co oszczędza użytkownikom 1 krok. Dane logowania tokena identyfikatora 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 w zakresie uwierzytelniania użytkowników i nie muszą implementować systemu zarządzania kontami użytkowników. W tym scenariuszu, zwanym przepływem niejawnym, nie trzeba powiązywać tokena odświeżania z kontem użytkownika ani zarządzać bezpiecznym miejscem na dane.

Przepływ kodu autoryzacji wymaga natomiast systemu kont użytkowników. Tokeny odświeżania użytkowników muszą być powiązane z poszczególnymi kontami na Twojej platformie backendowej i przechowywane do późniejszego użycia. Sposób implementacji, obsługi i zarządzania systemem kont użytkowników jest unikalny dla Twojej platformy i nie jest szczegółowo omawiany.

Użytkownicy mogą w każdej chwili wyświetlić lub wycofać zgodę w ustawieniach konta Google.

Opcjonalnie Twoja aplikacja internetowa lub platforma może wywołać google.accounts.oauth2.revoke aby wycofać tokeny i usunąć zgodę użytkownika, przydatne, gdy użytkownik usuwa swoje konto z Twojej platformy.

Inne opcje autoryzacji

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

Podobnie w przypadku przepływu kodu autoryzacji możesz zaimplementować własne metody i wykonać czynności opisane w artykule Korzystanie z protokołu OAuth 2.0 w aplikacjach serwera internetowego.

W obu przypadkach zdecydowanie zalecamy używanie biblioteki Google Identity Services aby skrócić czas i wysiłek związany z programowaniem oraz zminimalizować zagrożenia bezpieczeństwa, takie jak te opisane w artykule OAuth 2.0 Security Best Current Practice.