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
- aplikacja Google lub ustawienia konta Google
- Twoja platforma
- 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_token 或refresh_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 Web令牌(JWT) 。