Rozłączanie kont

Odłączenie może zostać zainicjowane na Twojej platformie lub w Google, a spójny stan połączenia w obu przypadkach zapewni najlepszą obsługę użytkowników. Łączenie punktów końcowych unieważniania tokenów lub ochrona między kontami jest opcjonalna w przypadku łączenia kont Google.

Konta mogą zostać rozłączone przez:

  • Prośba użytkownika:
  • brak możliwości odnowienia wygasłego tokena odświeżania.
  • Inne zdarzenia zainicjowane przez Ciebie lub przez Google. na przykład zawieszenie konta z powodu nadużyć lub wykrywania zagrożeń.

Użytkownik poprosił o odłączenie od Google

Odłączenie konta zainicjowane za pomocą konta Google lub aplikacji użytkownika powoduje usunięcie wcześniej wystawionych tokenów dostępu i odświeżenia, usunięcie zgody użytkownika oraz opcjonalnie wywołanie punktu końcowego unieważnienia tokena, jeśli zdecydujesz się go zaimplementować.

Użytkownik poprosił o odłączenie od Twojej platformy

Udostępnij użytkownikom mechanizm odłączenia kont, np. adres URL ich kont. Jeśli nie udostępniasz użytkownikom możliwości odłączenia konta, uwzględnij link do konta Google, aby użytkownicy mogli zarządzać swoim połączonym kontem.

Możesz wdrożyć mechanizm ryzyka i współdzielenia incydentów (RISC) oraz powiadomić Google o zmianach w stanie łączenia kont użytkowników. Takie działanie zapewnia większą wygodę korzystania z platformy, ponieważ zarówno Twoja platforma, jak i Google wyświetlają stan połączenia w sposób stały i spójny, bez konieczności aktualizowania stanu połączenia za pomocą prośby o odświeżenie lub dostęp.

Wygaśnięcie tokena

Aby zadbać o wygodę użytkowników i uniknąć przerw w działaniu usługi, Google stara się odnawiać tokeny odświeżania pod koniec ich cyklu życia. W niektórych przypadkach, gdy prawidłowy token odświeżania jest niedostępny, może być wymagana zgoda użytkownika na ponowne połączenie kont.

Zaprojektowanie platformy tak, aby obsługiwała wiele niezbędnych tokenów dostępu i odświeżania, może zminimalizować warunki wyścigów występujące na giełdach serwer-serwer między klastrami, uniknąć zakłóceń w działaniu użytkowników oraz zminimalizować scenariusze dotyczące czasu i obsługi błędów. Ostatecznie zarówno poprzednie, jak i nowe wygasłe tokeny mogą być używane przez krótki czas podczas odnawiania tokena klienta-serwera i przed synchronizacją klastra. Na przykład żądanie Google skierowane do usługi, które korzysta z poprzedniego nieważnego tokena dostępu, pojawia się tuż po wysłaniu nowego tokena dostępu, ale przed wykonaniem potwierdzenia i synchronizacji klastra odbywa się Google. Zalecamy skorzystanie z alternatywnych rozwiązań zabezpieczających do odświeżania rotacji tokenów.

Inne zdarzenia

Konta można rozłączyć z różnych powodów, takich jak brak aktywności, zawieszenie, złośliwe zachowanie itp. W takich przypadkach Twoja platforma i Google mogą najlepiej zarządzać kontami użytkowników i łączyć je ponownie, powiadamiając się o zmianach stanu konta i połączenia.

Zaimplementuj punkt końcowy unieważnienia tokena, aby umożliwić Google wywoływanie zdarzeń i powiadomienie Google o zdarzeniach unieważnienia tokenów za pomocą RISC, aby zapewnić niezmienną stan połączenia konta użytkownika z platformą i Google.

Punkt końcowy unieważnienia tokena

Jeśli obsługujesz OAuth 2.0 punkt końcowy unieważnienia tokena, Twoja platforma może otrzymywać powiadomienia od Google. Dzięki temu użytkownicy zmian stanu linków, unieważnienia tokena i czyszczenia danych uwierzytelniających autoryzacji.

Prośba ma taki format:

POST /revoke HTTP/1.1
Host: oauth2.example.com
Content-Type: application/x-www-form-urlencoded

client_id=GOOGLE_CLIENT_ID&client_secret=GOOGLE_CLIENT_SECRET&token=TOKEN&token_type_hint=refresh_token

Punkt końcowy unieważnienia tokena musi obsługiwać te parametry:

Parametry punktu końcowego unieważnienia
client_id Ciąg tekstowy identyfikujący źródło żądania jako Google. Ten ciąg musi: być zarejestrowany w Twoim systemie jako unikalny identyfikator Google.
client_secret Tajny ciąg znaków zarejestrowany w Google w przypadku Twojej usługi.
token Token, który ma zostać unieważniony.
token_type_hint (Opcjonalnie) Typ unieważnianego tokena: access_token lub refresh_token. Jeśli nie podasz tu żadnej wartości, zostanie użyta wartość domyślna access_token.

Zwracaj odpowiedź, gdy token zostanie usunięty lub nieprawidłowy. Zobacz poniższe informacje dotyczące przykład:

HTTP/1.1 200 Success
Content-Type: application/json;charset=UTF-8

Jeśli z jakiegokolwiek powodu nie można usunąć tokena, należy zwrócić kod odpowiedzi 503, jak w tym przykładzie:

HTTP/1.1 503 Service Unavailable
Content-Type: application/json;charset=UTF-8
Retry-After: HTTP-date / delay-seconds

Google ponawia próbę później lub na żądanie użytkownika Retry-After.

Ochrona wszystkich kont (RISC)

Jeśli obsługujesz Ochronę wszystkich kont, Twoja platforma może powiadamiać Google, gdy: tokeny dostępu lub odświeżania zostaną unieważnione. Dzięki temu Google może informować użytkowników zmiany stanu połączenia, unieważnienie tokena, wyczyszczenie danych uwierzytelniających autoryzacji.

Ochrona wszystkich kont opiera się na standard RISC opracowany w OpenID Foundation.

tokena zdarzenia związanego z bezpieczeństwem. jest używany do powiadamiania Google o unieważnieniu tokena.

Po zdekodowaniu zdarzenie unieważnienia tokena wygląda tak:

{
  "iss":"http://risc.example.com",
  "iat":1521068887,
  "aud":"google_account_linking",
  "jti":"101942095",
  "toe": "1508184602",
  "events": {
    "https://schemas.openid.net/secevent/oauth/event-type/token-revoked":{
      "subject_type": "oauth_token",
      "token_type": "refresh_token",
      "token_identifier_alg": "hash_SHA512_double",
      "token": "double SHA-512 hash value of token"
    }
  }
}

Tokeny zdarzeń związanych z bezpieczeństwem używane do powiadamiania Google o zdarzeniach unieważnienia tokenów. musi spełniać wymagania tej tabeli:

Zdarzenia unieważnienia tokena
iss Issuer Claim (Roszczenie wydawcy): adres URL, który hostujesz i udostępniasz: Google podczas rejestracji.
aud Deklaracja odbiorców: identyfikuje Google jako odbiorcę JWT. it musi mieć wartość google_account_linking.
jti Deklaracja identyfikatora JWT:unikalny identyfikator generowany przez Ciebie dla każdego token zdarzenia dotyczącego bezpieczeństwa.
iat Issued at Claim (Wystawiono przy ostrzeżeniu): to jest wartość NumericDate. , który reprezentuje czas utworzenia tego tokena zdarzenia związanego z bezpieczeństwem.
toe Time of Event Claim (Czas zgłoszenia wydarzenia): pole jest opcjonalne. NumericDate, która reprezentuje moment Token został unieważniony.
exp Roszczenie dotyczące czasu wygaśnięcia: nie uwzględniaj tego pola. , bo zdarzenie, które spowodowało to powiadomienie, już miało miejsce.
events
Żądanie zdarzeń związanych z bezpieczeństwem: jest to obiekt JSON. może zawierać tylko jedno zdarzenie unieważnienia tokena.
subject_type Należy ustawić wartość oauth_token.
token_type Jest to typ unieważniania tokena: access_token lub refresh_token.
token_identifier_alg To algorytm używany do kodowania tokena i musi być hash_SHA512_double
token Jest to identyfikator unieważnionego tokena.

Więcej informacji o typach i formatach pól znajdziesz w artykule Token internetowy JSON (JWT).