LoginSignup
0
0

GoogleのOAuth2.0のリフレッシュトークンに関するメモ

Last updated at Posted at 2024-01-14

GoogleアカウントでOAuth2.0/OpenID Connectの実験をした際ののメモです。

GoogleのOAuth2.0認可エンドポイントにアクセスするとアクセストークンが払い出されます。アクセストークンの有効期限は1時間です。

アクセストークンが期限切れになった場合に再度認可エンドポイントにアクセスしても問題ありませんが、リフレッシュトークンを利用して暗黙にアクセストークンを再発行することもできます。

一度発行されたリフレッシュトークンは無期限で使えます。6ヶ月使われていなければ無効化されますが、利用されている限り有効となります。

リフレッシュトークンを発行するためのパラメータ指定がある

Googleでリフレッシュトークンを取得する場合、認可エンドポイントへのアクセスの仕方が少し変わります。

下記URLによれば、access_type=offlineを付けないとリフレッシュトークンが発行されないようです。また、理屈はわかっていないんですがprompt=consentも付ける必要があるようです1

prompt=consentの代わりにapproval_prompt=forceというパラメータをつけろという話もググると見つかるんですが、多分これは昔の仕様で廃止予定なんじゃないでしょうか(今も使えるようですが)。

リフレッシュトークン無効化はすぐ反映される

下記URLによれば、ユーザーがアプリのアクセス権を取り消すことでリフレッシュトークンを無効化できると書いてあります。

実際、アクセス権を取り消すとすぐリフレッシュトークンが無効化されて、下記のようなレスポンスが帰ってきました。

{ error: 'invalid_grant', error_description: 'Token has been expired or revoked.' }
  1. https://github.com/pomerium/pomerium/pull/81 を読むとワークアラウンドとか書いてありますね…

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0