山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

OAuthのリフレッシュトークン

OAuth2にはリフレッシュトークンという仕組みが

あります。

一見セキュリティを高めるための仕組みのようですが

よく考えるとこれがあることによってどうして

セキュリティが高まるのかよくわかりません。

アクセストークンが漏えいするリスクを

考えて有効期限を短くするというのはわかります。

しかしリフレッシュトークンは有効期限が長く

しかもアクセストークンと一緒に送信されてくるので

漏えいするリスクはあまり変わらず、結局リスクは

同じくらいではないか。


いくつかネット上で理由が説明されていました。

Re: [OAUTH-WG] Refresh tokens

Why Does OAuth v2 Have Both Access and Refresh Tokens?

1つはパフォーマンスの問題。アクセストークンの寿命を

短くすることによって毎回DBアクセスしなくて済むように

できるよねというもの。

もう1つはセキュリティ。アクセスログとかいろんな

ところにアクセストークンが残ってしまう可能性が

あるよねというもの。

アクセストークンはSSLが必須ではないということも

あります。

リフレッシュトークンの送受信はSSLが必須です。

なるほどという感じですが


いくら有効期限を短くしたとしてもその有効期限内に

漏えいしてしまったらやっぱり問題だと思います。

ならばアクセストークンの送受信も全てSSL必須に

したほうがよい。

あとはサーバーのパフォーマンス次第でリフレッシュ

トークンはあまり必要がなくなってきます。


実際FacebookGoogleはリフレッシュトークンを

実装していないようです。(Googleはオプションで

発行できる)

mixiAPIは仕様通りやってさらにリフレッシュ

トークンにも有効期限を設けているようです。