リンクの解除はプラットフォームまたは 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 に通知できます。これにより、Google は、リンク状態の変更をユーザーに通知し、トークンを無効化し、セキュリティ認証情報をクリーンアップして、認可を付与できます。
クロスアカウント保護は、OpenID Foundation が開発した 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 |
Audience Claim: これは Google を JWT 受信者として識別します。google_account_linking に設定する必要があります。 |
||||||||||
jti |
JWT ID クレーム: これは、セキュリティ イベント トークンごとに生成する一意の ID です。 | ||||||||||
iat |
Issued At Claim: これは、このセキュリティ イベント トークンが作成された時刻を表す NumericDate 値です。 |
||||||||||
toe |
イベント クレーム時刻: これは省略可能な NumericDate 値で、トークンが取り消された時刻を表します。 |
||||||||||
exp |
Expiration Time Claim: このフィールドは含めないでください。この通知になるイベントはすでに発生しています。 | ||||||||||
events |
|
フィールドのタイプと形式の詳細については、JSON Web Token(JWT)をご覧ください。