Skip to content

Instantly share code, notes, and snippets.

@daijinload
Last active November 20, 2016 11:47
Show Gist options
  • Save daijinload/ef481db6d6764ccdc785bf7547090012 to your computer and use it in GitHub Desktop.
Save daijinload/ef481db6d6764ccdc785bf7547090012 to your computer and use it in GitHub Desktop.

通常のサイトだと、secure sessionを使ったログイン認証が使われている。 スマホのネイティブアプリなどでAPIを使用する場合、sessionが使えないらしく、Oauth2のトークン認証が使われている。

sessionの場合、IDの洗い替えを意識しなくていい。

トークンの場合、アプリ側が頑張る必要が出てくる。

通常トークンとリフレッシュ用トークンの二つを発行して、 1時間以内で、リフレッシュ用トークンを使用して、通常トークンの洗い替えを行う。

通常トークンとリフレッシュトークンが、悪意のあるユーザに盗まれたとしても、 通常トークンの期限切れのタイミングで、悪意のあるユーザがリフレッシュを行い、 正規ユーザの通常トークンが使えなくなり、再度ログインを促されるため、安全になるはず?

逆に言えば、↑の洗い替えを適切に行っていない&再度ログインを促さないとかすると、まずい。

また、個人的には、通常トークンが期限切れ以外の状態になるのは、異常なので、 それを検知した段階で、サーバーサイドで、両方のトークンを無効化(トークン削除)を行うべきだと考える。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment