1. ホーム
  2. oauth

[解決済み】アクセストークンが失効するのはなぜですか?

2022-04-11 23:01:43

質問

Google API と OAuth2 を使い始めたところです。クライアントが私のアプリを認証するとき、私は "refresh token" と短命の "access token" を与えられます。アクセストークンの有効期限が切れるたびに、リフレッシュ トークンを Google に POST すると、新しいアクセストークンがもらえます。

質問ですが、アクセストークンの有効期限は何のためにあるのでしょうか?なぜ、リフレッシュ・トークンの代わりに、長持ちするアクセストークンが存在しないのでしょうか?

また、リフレッシュトークンの有効期限はありますか?

参照 OAuth 2.0を使ってGoogle APIにアクセスする は、Google OAuth2 のワークフローについての詳細です。

解決するには?

これは非常に実装に依存しますが、一般的なアイデアは、プロバイダが短期のアクセストークンを長期のリフレッシュトークンで発行できるようにすることです。なぜですか?

  • 多くのプロバイダはベアラートークンをサポートしていますが、これはセキュリティ的に非常に弱いものです。トークンの有効期限を短くし、リフレッシュを必須にすることで、攻撃者が盗んだトークンを悪用できる時間を制限しています。
  • 大規模なデプロイメントでは、APIコールのたびにデータベース検索を実行したくないので、代わりに自己暗号化アクセストークンを発行し、復号化によって検証できるようにする。しかし、これはこれらのトークンを取り消す方法がないことも意味するので、トークンは短期間で発行され、更新されなければならない。
  • リフレッシュ・トークンは、クライアント認証を必要とするため、より強固なものとなっています。上記のアクセストークンとは異なり、通常はデータベース検索で実装されます。