Rozłączanie kont

Odłączenie może zostać zainicjowane z Twojej platformy lub Google, a wyświetlanie spójnego stanu łącza na obu zapewnia najlepsze wrażenia użytkownika. Obsługa punktu końcowego odwołania tokenu lub ochrony między kontami jest opcjonalna w przypadku łączenia kont Google.

Konta można rozłączyć w jeden z następujących sposobów:

  • Żądanie użytkownika od
  • Nie udało się odnowić wygasłego tokena odświeżania
  • Inne wydarzenia zainicjowane przez Ciebie lub Google. Na przykład zawieszenie konta przez usługi wykrywania nadużyć i zagrożeń.

Użytkownik zażądał odłączenia od Google

Odłączenie konta zainicjowane za pośrednictwem konta Google lub aplikacji użytkownika powoduje usunięcie wszelkich wcześniej wydanych tokenów dostępu i odświeżania, usuwa zgodę użytkownika i opcjonalnie wywołuje punkt końcowy odwołania tokenu, jeśli zdecydujesz się go zaimplementować.

Użytkownik zażądał odłączenia od Twojej platformy

Powinieneś zapewnić użytkownikom mechanizm odłączania, na przykład adres URL do ich kont. Jeśli nie oferujesz użytkownikom możliwości odłączenia, dołącz link do konta Google, aby użytkownicy mogli zarządzać połączonym kontem.

Możesz zdecydować się na wdrożenie udostępniania ryzyka i incydentów oraz współpracy (RISC) i powiadamiać Google o zmianach w stanie łączenia kont użytkowników. Pozwala to na lepsze wrażenia użytkownika, gdy zarówno Twoja platforma, jak i Google pokazują aktualny i spójny stan łączenia bez konieczności polegania na odświeżaniu lub żądaniu tokenu dostępu w celu zaktualizowania stanu łączenia.

Wygaśnięcie tokena

Aby zapewnić płynne wrażenia użytkownika i uniknąć przerw w świadczeniu usług, Google próbuje odnowić tokeny odświeżania pod koniec ich życia. W niektórych scenariuszach może być wymagana zgoda użytkownika na ponowne połączenie kont, gdy prawidłowy token odświeżania jest niedostępny.

Zaprojektowanie platformy do obsługi wielu niewygasłych tokenów dostępu i odświeżania może zminimalizować sytuacje wyścigu obecne w wymianach klient-serwer między środowiskami klastrowymi, uniknąć zakłóceń użytkownika i zminimalizować złożone scenariusze czasowe i obsługi błędów. Chociaż ostatecznie spójne, zarówno poprzednie, jak i nowo wydane niewygasłe tokeny mogą być używane przez krótki czas podczas wymiany odnawiania tokenu klient-serwer i przed synchronizacją klastra. Na przykład żądanie Google do Twojej usługi, które korzysta z poprzedniego tokenu dostępu, który wygasł, następuje zaraz po wydaniu nowego tokena dostępu, ale przed odbiorem i synchronizacją klastra ma miejsce w Google. Zalecane są alternatywne środki bezpieczeństwa do odświeżania rotacji tokenów .

Inne wydarzenia

Konta mogą zostać odłączone z różnych innych powodów, takich jak brak aktywności, zawieszenie, złośliwe zachowanie itp. W takich sytuacjach Twoja platforma i Google mogą najlepiej zarządzać kontami użytkowników i ponownie łączyć się, powiadamiając się nawzajem o zmianach konta i stanu łącza.

Zaimplementuj punkt końcowy odwołania tokenów, aby Google mógł wywoływać, i powiadamiaj Google o zdarzeniach związanych z unieważnianiem tokenów za pomocą RISC, aby zapewnić spójny stan połączenia konta użytkownika i platformy.

Punkt końcowy odwołania tokenu

如果您支持OAuth 2.0令牌吊销终结点,则您的平台可以接收来自Google的通知。这使您可以通知用户链接状态更改,使令牌无效以及清理安全凭证和授权授予。

该请求具有以下形式:

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

您的令牌吊销终结点必须能够处理以下参数:

撤销端点参数
client_id一个字符串,用于将请求来源标识为Google。此字符串必须在您的系统中注册为Google的唯一标识符。
client_secret您在Google注册的用于服务的秘密字符串。
token要撤消的令牌。
token_type_hint (可选)要撤消的令牌类型,可以是access_tokenrefresh_token 。如果未指定,则默认为access_token

当令牌被删除或无效时返回响应。请参见以下示例:

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

如果由于某种原因无法删除令牌,请返回503响应代码,如以下示例所示:

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

Google稍后或按照Retry-After的要求重试该请求。

Ochrona obejmująca wiele kont (RISC)

如果您支持跨帐户保护,则当访问或刷新令牌被吊销时,您的平台可以通知Google。这使Google可以通知用户链接状态更改,使令牌无效,清理安全凭证和授权授予。

跨帐户保护基于OpenID基金会开发的RISC标准

安全事件令牌用于将令牌撤销通知Google。

解码后,令牌吊销事件类似于以下示例:

{
  "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"
    }
  }
}

您用于向Google通知令牌吊销事件的安全事件令牌必须符合下表中的要求:

令牌撤销事件
iss发行人声明:这是您托管的URL,在注册过程中已与Google共享。
aud受众声明:将Google识别为JWT收件人。必须将其设置为google_account_linking
jti JWT ID声明:这是您为每个安全事件令牌生成的唯一ID。
iat声明时发出:这是一个NumericDate值,表示创建此安全事件令牌的时间。
toe事件声明时间:这是一个可选的NumericDate值,表示令牌被撤销的时间。
exp截止时间要求:包括这个领域,因为造成这种通知的事件已经发生。
events
安全事件声明:这是一个JSON对象,并且必须仅包含单个令牌吊销事件。
subject_type必须将其设置为oauth_token
token_type这是被吊销的令牌类型,即access_tokenrefresh_token
token_identifier_alg这是用于编码令牌的算法,并且必须为hash_SHA512_double
token这是吊销令牌的ID。

有关字段类型和格式的更多信息,请参见JSON Web令牌(JWT)