リンクの解除はプラットフォームまたは Google から開始される場合があり、どちらの場合も一貫したリンク状態を表示することでユーザー エクスペリエンスを最大限に高めることができます。Google アカウントのリンク設定では、トークン取り消しエンドポイントやクロスアカウント保護は任意です。
次のいずれかによってアカウントのリンクが解除されることがあります。
- ユーザーからのリクエスト:
- Google アプリケーションまたは Google アカウントの設定
- 使用するプラットフォーム
- 期限切れの更新トークンを更新できませんでした
- お客様または Google が開始したその他のイベント。たとえば、不正行為や脅威検出サービスによるアカウントの強制停止などです。
ユーザーが Google とのリンクを解除するようリクエストしました
ユーザーの Google アカウントまたはアプリからアカウントのリンク解除が開始されると、以前に発行したアクセス トークンと更新トークンが削除され、ユーザーの同意が削除されます。また、必要に応じてトークン取り消しエンドポイントを呼び出すこともできます。
ユーザーがプラットフォームからのリンク解除をリクエストしました
ユーザーがアカウントのリンクを解除するためのメカニズム(アカウントへの URL など)を用意する必要があります。リンクを解除する方法がユーザーにない場合は、Google アカウントへのリンクを含めて、ユーザーがリンクされたアカウントを管理できるようにします。
リスクとインシデントの共有とコラボレーション(RISC)を実装し、ユーザー アカウントのリンク ステータスの変更を Google に通知することもできます。これにより、更新状態やアクセス トークンのリクエストを使用してリンク状態を更新する必要なく、プラットフォームと 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 はユーザーに以下の情報を通知できます。 リンク状態の変更、トークンの無効化、セキュリティ認証情報のクリーンアップ、 許可します。
クロスアカウント保護機能は、 RISC 標準。 OpenID Foundation へようこそ。
Security Event Token トークンの取り消しを 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(発行元の申し立て): ニュース メディアがホストし、共有する URL です。 登録時に Google にお問い合わせください。 | ||||||||||
aud |
オーディエンス クレーム: これにより、Google が JWT 受信者として識別されます。これは、
google_account_linking に設定する必要があります。 |
||||||||||
jti |
JWT ID Claim: これは、セッションごとに生成する一意の ID できます。 | ||||||||||
iat |
Issued At Claim: NumericDate 値です。
このセキュリティ イベント トークンが作成された時刻を表します。 |
||||||||||
toe |
イベント発生時の申し立て: これは省略可能です。
開始日時を表す NumericDate 値を使用して
取り消されています。 |
||||||||||
exp |
有効期限の要求: このフィールドは含めないでください。 イベントがすでに実行されていることがわかります。 | ||||||||||
events |
|
フィールドの型と形式について詳しくは、このモジュールの JSON Web Token(JWT)。