LoginSignup
1
2

More than 5 years have passed since last update.

OAuth2認証のアクセストークンとかリフレッシュトークンが何なのかを書いておこうぜ☆(^~^)

Last updated at Posted at 2018-09-09

適当にだらだら書く。

クライアントマシン と サーバーマシン があるとする。

クライアントマシンとして やることは、

  • ログイン
  • APIの利用
  • 認証の期限の延長

の3つがある。

ユーザー認証しよう

OAuth2 の仕組みでは、だいたい2つの URL を教えられていると思う。

  1. /authentication
  2. /token

とか。つづりは違うかもしれない。この2つは何なのか。それは

  1. ログイン
  2. トークンの発行

の違いだぜ。

ログインとは

  • ユーザー名
  • パスワード

を入力する画面のことだぜ。これが /authentication ページの仕事だぜ。
ログインに成功すると、 /token ページに飛ばされると思う。

/token ページって何なのか?

サーバーが、

  • アクセストークン
  • リフレッシュトークン

の2つをクライアントマシンに送るページだぜ。トークンとは、単なる長い文字列なので、クライアントマシンのファイルに2つとも保存しておけだぜ。

クライアントマシンから サーバーマシンに アクセスして APIを叩こうとするたびに、アクセストークンが必要になる。
クライアントマシンに保存してあるファイルから アクセストークンを読み込んで使えばいいだろう。
このアクセストークンには有効期限があって、例えば 1時間で 有効期限が切れてしまったりする。

じゃあ、有効期限を延ばすにはどうすればいいのか。それは サーバーから

  • 新しいアクセストークン
  • 新しいリフレッシュトークン

のペアを再送してもらうことだぜ。どうやったらできるのか?

/token ページに向けて、アクセストークンと リフレッシュトークン を送信しろだぜ。
どっちも クライアントマシンのファイルに保存してあるだろ。読み込めだぜ。
すると、
/token ページは 新しいアクセストークンと 新しいリフレッシュトークンを送り返してくる。
クライアントマシンのファイルに 両方とも保存しろだぜ。
つまり、
ログインしなおしたのと 同じ流れ に乗れるので、プログラムの追加は無いはずだぜ。

1回使ったリフレッシュトークンや、新しいアクセストークンを発行したあとの古いアクセストークンは使えなくなるので、
捨ててしまえだぜ。
だから

  • アクセストークン
  • リフレッシュトークン

を保存するファイルも1個でいい。上書き保存で行ける。

理屈としては、アクセストークンは毎回必要だから 盗聴されやすい。だから1時間で有効期限を切る。
リフレッシュトークンは ログイン時と、トークンの更新時の2回しか 通信上で流れないので 盗聴されるリスクが軽減、
というだけだぜ。

で、リフレッシュトークンを送信するタイミングだが、アクセストークンの有効期限が切れたあとでもいいし、
切れる5分前に送ってもいいし、さっさと 送ってもいい。
ただし 1分毎に送っているようでは 通信上に余り流れないというメリットがなくなるので そんなことはしない。

1
2
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
1
2