アカウントのリンク解除

リンク解除は、プラットフォームまたは 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_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 がリクエストしたときにリクエストを再試行します。

クロスアカウント保護機能(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)