Na tej stronie znajdziesz kilka ogólnych sprawdzonych metod dotyczących integracji z OAuth 2.0. Weź pod uwagę te sprawdzone metody, a także wskazówki dotyczące Twojego typu aplikacji i platformy programistycznej. Zapoznaj się też z wskazówkami dotyczącymi przygotowania aplikacji do wersji produkcyjnej i zasadami Google dotyczącymi OAuth 2.0.
Bezpieczne obchodzenie się z danymi logowania klienta
Dane logowania klienta OAuth identyfikują Twoją aplikację i należy je traktować ostrożnie. Przechowuj te dane logowania tylko w bezpiecznym miejscu, na przykład w usłudze zarządzania sekretami, takiej jak Google Cloud Secret Manager. Nie koduj danych logowania na stałe, nie zapisuj ich w repozytorium kodu ani nie publikuj ich publicznie.
Bezpieczne obchodzenie się z tokenami użytkowników
Tokeny użytkownika obejmują zarówno tokeny odświeżania, jak i tokeny dostępu używane przez aplikację. Przechowuj tokeny w bezpieczny sposób w spoczynku i nigdy nie przesyłaj ich w postaci zwykłego tekstu. Użyj bezpiecznego systemu przechowywania danych odpowiedniego dla Twojej platformy, takiego jak Keystore na Androidzie, usługi Keychain w iOS i macOS lub sejf z danymi logowania w Windows.
Cofnij tokeny, gdy nie są już potrzebne, i trwało je usuń ze swoich systemów.
Dodatkowo zastosuj te sprawdzone metody na swojej platformie:
- W przypadku aplikacji po stronie serwera, które przechowują tokeny wielu użytkowników, należy szyfrować je w spoczynku i zadbać o to, aby miejsce przechowywania danych nie było publicznie dostępne w internecie.
- W przypadku natywnych aplikacji na komputery zalecamy używanie protokołu Proof Key for Code Exchange (PKCE), aby uzyskać kody autoryzacji, które można wymienić na tokeny dostępu.
Obsługa unieważnienia i wygaśnięcia tokena odświeżania
Jeśli Twoja aplikacja poprosiła o odświeżenie tokena dostępu offline, musisz też obsłużyć jego unieważnienie lub wygaśnięcie. Tokeny mogą być unieważniane z różnych powodów, na przykład z powodu wygaśnięcia lub odmowy dostępu przez użytkownika lub automatycznego procesu. W takim przypadku dokładnie zastanów się, jak powinna reagować Twoja aplikacja. Możesz na przykład poprosić użytkownika o potwierdzenie podczas następnego logowania lub wyczyścić jego dane. Aby otrzymywać powiadomienia o odwołaniu tokena, zintegruj się z usługą Ochrona wszystkich kont.
Autoryzacja przyrostowa
Użyj autoryzacji stopniowej, aby poprosić o odpowiednie zakresy OAuth, gdy aplikacja będzie ich potrzebować.
Nie wysyłaj prośby o dostęp do danych, gdy użytkownik po raz pierwszy się uwierzytelnia, chyba że jest to niezbędne do działania głównej funkcjonalności aplikacji. Zamiast tego poproś o dostęp tylko do tych zakresów, które są potrzebne do wykonania danego zadania, zgodnie z zasadą wybierania jak najmniejszych i najbardziej ograniczonych zakresów.
Zawsze proś o zakresy w kontekście, aby pomóc użytkownikom zrozumieć, dlaczego aplikacja prosi o dostęp i jak będą wykorzystywane dane.
Aplikacja może na przykład wyglądać tak:
- Użytkownik uwierzytelnia się w aplikacji.
- Nie trzeba prosić o żadne dodatkowe zakresy. Aplikacja zapewnia podstawowe funkcje, które umożliwiają użytkownikowi korzystanie z funkcji, które nie wymagają żadnych dodatkowych danych ani dostępu.
- Użytkownik wybiera funkcję, która wymaga dostępu do dodatkowych danych.
- Aplikacja wysyła żądanie autoryzacji dla tego konkretnego zakresu OAuth wymaganego do korzystania z tej funkcji. Jeśli ta funkcja wymaga wielu zakresów, zastosuj sprawdzone metody opisane poniżej.
- Jeśli użytkownik odmówi, aplikacja wyłączy funkcję i zaoferuje mu dodatkowy kontekst, aby ponownie poprosił o dostęp.
Zarządzanie zgodą na wykorzystanie danych w wielu zakresach
Gdy żądasz wielu zakresów jednocześnie, użytkownicy mogą nie przyznać wszystkich zakresów protokołu OAuth. Aplikacja powinna obsługiwać odmowę zakresów, wyłączając odpowiednie funkcje.
Jeśli podstawowe funkcje aplikacji wymagają wielu zakresów, przed wyświetleniem prośby o zgodę poinformuj o tym użytkownika.
Możesz ponownie poprosić użytkownika o zgodę tylko wtedy, gdy wyraźnie wskaże on, że zamierza użyć konkretnej funkcji, która wymaga dostępu. Przed przesłaniem żądania zakresów uprawnień OAuth aplikacja powinna wyświetlić użytkownikowi odpowiedni kontekst i uzasadnienie.
Warto zminimalizować liczbę zakresów, których aplikacja żąda naraz. Zamiast tego używaj stopniowego uwierzytelniania, aby żądać zakresów w kontekście funkcji i działania.
Korzystanie z bezpiecznych przeglądarek
W internecie żądania autoryzacji OAuth 2.0 można wysyłać tylko z pełnofunkcyjnych przeglądarek internetowych. Na innych platformach wybierz prawidłowy typ klienta OAuth i zintegruj OAuth w odpowiedni sposób. Nie przekierowuj żądania przez osadzone środowisko przeglądania, w tym przez przeglądarki internetowe na platformach mobilnych, takie jak WebView na Androidzie lub WKWebView na iOS. Zamiast tego użyj natywnych bibliotek OAuth lub logowania przez Google na swojej platformie.
Ręczne tworzenie i konfigurowanie klientów OAuth
Aby zapobiec nadużyciom, nie można tworzyć ani modyfikować klientów OAuth za pomocą kodu. Musisz użyć konsoli Google Developers, aby wyraźnie zaakceptować warunki korzystania z usługi, skonfigurować klienta OAuth i przygotować się do weryfikacji OAuth.
W przypadku korzystania z przepływów pracy automatycznych rozważ użycie kont usługi.
Usuwanie nieużywanych klientów OAuth
Regularnie sprawdzaj klientów OAuth 2.0 i usuwaj tych, których aplikacja już nie potrzebuje lub których nie używa. Pozostawienie skonfigurowanych, nieużywanych klientów stanowi potencjalne zagrożenie dla bezpieczeństwa, ponieważ w przypadku naruszenia zabezpieczeń Twoich danych logowania do klienta ktoś może niewłaściwie wykorzystać klienta.
Aby jeszcze bardziej ograniczyć ryzyko związane z nieużywanymi klientami, klienci OAuth 2.0, którzy pozostają nieaktywni przez 6 miesięcy, są automatycznie usuwani.
Zalecamy, aby nie czekać na automatyczne usunięcie, ale aktywnie usuwać nieużywane konta. Dzięki temu zminimalizujesz obszar ataku aplikacji i zapewnisz odpowiednią higienę bezpieczeństwa.