アカウントのリンク解除

リンク解除は、プラットフォームまたは Google から開始できます。両方で一貫したリンク状態を表示すると、ユーザー エクスペリエンスが向上します。Google アカウントのリンクでは、トークン取り消しエンドポイントまたはクロスアカウント保護のサポートは任意です。

アカウントのリンクが解除される原因は次のとおりです。

    • からのユーザー リクエスト
    • Google アプリケーションまたは Google アカウントの設定
    • プラットフォーム
  • 期限切れの更新トークンを更新できない
  • お客様または Google によって開始されたその他のイベント。たとえば、不正行為や脅威検知サービスによるアカウントの停止などです。

お客様が Google とのリンク解除をリクエストしている

ユーザーの Google アカウントまたはアプリから開始されたアカウントのリンク解除では、以前に発行されたアクセス トークンと更新トークンが削除され、ユーザーの同意が削除されます。また、トークン取り消しエンドポイントを実装した場合は、必要に応じてそのエンドポイントが呼び出されます。

ユーザーがプラットフォームからのリンク解除をリクエストしました

ユーザーがリンクを解除できるメカニズム(アカウントの URL など)を提供する必要があります。ユーザーにリンクを解除する方法を提供していない場合は、ユーザーがリンクされたアカウントを管理できるように、Google アカウントへのリンクを含めます。

リスクとインシデントの共有とコラボレーション(RISC)を実装し、ユーザーのアカウントのリンクステータスの変更を Google に通知することもできます。これにより、更新トークンまたはアクセス トークン リクエストに依存せずにリンク状態を更新できるため、プラットフォームと Google の両方で現在の一貫したリンクステータスを表示できるという、優れたユーザー エクスペリエンスを実現できます。

トークンの有効期限

スムーズなユーザー エクスペリエンスを提供してサービスの中断を回避するため、Google は有効期限が近づいた更新トークンの更新を試みます。有効な更新トークンが利用できない場合、アカウントを再リンクするためにユーザーの同意が必要になることがあります。

有効期限が切れていない複数のアクセス トークンと更新トークンをサポートするようにプラットフォームを設計すると、クラスタ化された環境間のクライアント サーバー交換で発生する競合状態を最小限に抑え、ユーザーの中断を回避し、複雑なタイミングとエラー処理のシナリオを最小限に抑えることができます。最終的には一貫性を確保しますが、クライアント サーバー トークンの更新交換中とクラスタ同期の前に、以前に発行されたトークンと新しく発行された有効期限切れでないトークンの両方が短時間使用されることがあります。たとえば、新しいアクセス トークンを発行した直後で、Google で受信とクラスタ同期が行われる前に、期限切れでない以前のアクセス トークンを使用する Google からのリクエストがサービスに送信されます。更新トークンのローテーション以外のセキュリティ対策を講じることをおすすめします。

その他のイベント

アカウントのリンクが解除される理由は、無効化、停止、不正行為など、他にもさまざまです。このようなシナリオでは、プラットフォームと Google がアカウントとリンクの状態の変更を相互に通知することで、ユーザー アカウントを適切に管理し、再リンクできます。

Google が呼び出すトークン取り消しエンドポイントを実装し、RISC を使用してトークン取り消しイベントを Google に通知して、プラットフォームと Google でユーザー アカウントのリンク状態の一貫性を維持します。

トークン失効エンドポイント

如果您支持 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 的请求重试请求。

クロスアカウント保護機能(RISC)

如果您支持跨账号保护功能,您的平台可以在以下情况下通知 Google: 访问或刷新令牌会被撤消。这样,Google 就可以告知用户 更改关联状态、使令牌失效、清理安全凭据 授权。

跨账号保护以 RISC 标准是 OpenID Foundation。

安全事件令牌 用于通知 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 Issuer Claim:这是由您托管的网址,并且会分享给 在注册过程中与 Google 联系。
aud 受众群体声明:这可将 Google 标识为 JWT 收件人。它 必须设置为 google_account_linking
jti JWT ID 声明:这是您为每次 JWT 生成的唯一 ID 安全事件令牌
iat Issued At Claim:这是一个 NumericDate 值 表示创建此安全性事件令牌的时间。
toe 事件声明时间:此为可选 NumericDate 值,该值表示 已撤消。
exp 到期时间声明请勿包含此字段。 因为导致此通知的事件已经发生。
events
安全性事件声明:这是一个 JSON 对象,并且 只能包含一个令牌撤消事件。
subject_type 此字段必须设置为 oauth_token
token_type 这是被撤消的令牌类型, access_tokenrefresh_token
token_identifier_alg 这是用于对令牌进行编码的算法,必须 hash_SHA512_double
token 这是已撤消的令牌的 ID。

如需详细了解字段类型和格式,请参阅 JSON 网络令牌 (JWT)