0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IDaaS/IdP各サービスのリフレッシュトークンの調査

Last updated at Posted at 2024-01-22

OAuth2.0のリフレッシュトークンのローテーション実装やexpire時間はIDaaS/IdP各サービスで結構違うので、調べた内容をまとめてみます。

リフレッシュトークンは漏れたらヤバいトークンなので、その扱いを見ることで各社のセキュリティの考え方が垣間見える気がします。

Google

  • トークン有効期限:無期限(6ヶ月使われなかったらexpire)
  • ローテーション:なし
  • 管理者が特定ユーザーのトークンを無効化できるか:Workspaceなら可能
    • トークンだけ無効化はできないが、OAuth承認済みアプリを管理者が削除できる

AWS Cognito

  • トークン有効期限:設定で変更可能(デフォルト30日)
  • ローテーション:なし
  • 管理者が特定ユーザーのトークンを無効化できるか:可能

Auth0

  • トークン有効期限:設定で変更可能(デフォルト30日)
    • ローテーションしても有効期限は延びない
  • ローテーション:あり
  • ローテート済みのトークンが使われた場合の処理:該当ユーザーの全トークンが無効化
  • 同じリフレッシュトークンに関する冪等性:デフォルトなし
    • 設定で猶予時間を設定できる、15秒などとすれば実用上は十分と思われる
  • 管理者が特定ユーザーのトークンを無効化できるか:可能

Slack

  • トークン有効期限:使われない限り無期限
  • ローテーション:あり
  • ローテート済みのリフレッシュトークンが使われた場合の処理:特になし
  • 同じリフレッシュトークンに関する冪等性:あり
    • ローテート済みトークンは初回利用から12時間後まで有効(長すぎでは?)
  • 管理者が特定ユーザーのトークンを無効化できるか:?

所感など

GoogleもAWSもリフレッシュトークンのローテーションを実装していないのは意外に感じました。

そもそもリフレッシュトークンのローテーションの必要性について懐疑的な関係者も多いのか、どこかの公式ドキュメントに実装する意味がないって書いてあったような記憶があります。真偽は判断しかねますが。

実際のところ相当頑張らないと「正しい」ローテーション実装にならないので実装しない方が正解と言いたくなる気持ちもわかるんですが、Auth0のローテーション実装は完璧に近いんじゃないでしょうか。(私は素人なので、むしろ専門家の人の意見が聞きたい)

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?