Go Langで作成したログイン認証のjwtのアクセストークンが切れた時にどうするか
アクセストークンの有効期限は短く ログイン認証を作るうえで、アクセストークンの有効期限は短い方がいい、という情報を得た。 アクセストークンが盗まれた時に、備えてのことらしい。 例えば15分とか、って例で書かれていた。 そうすると15分ごとにログインをし直させなければならない。 それはユーザビリティ的にどうなのだろうか。という疑問が生まれた。 それを解決するのがリフレッシュトークンらしい。 アクセストークンとリフレッシュトークン リフレッシュトークンはアクセストークンを再発行するために必要になる。 例えば、ログインをしアクセストークンを取得する。 15分後、アクセストークンが切れた場合はリフレッシュトークンを使用し、アクセストークンを再発行する。 その際、リフレッシュトークンも最新化する。 これで15分ごとにユーザーがログインし直すという苦痛から解放することができる。 アクセストークンは危険で、リフレッシュトークンは安全なの? アクセストークンもリフレッシュトークンも一緒に得ることができ、同じように保存をしておく必要がある。 それなのにどうしてアクセストークンは危険で、リフレッシュトークンは安全なのだろうか。 ってずっと疑問だったけど、社内の博士に聞き解決した。 確率の問題 アクセストークン、リフレッシュトークンが盗まれるのは通信中である。 通信にアクセストークンを持たせて、15分間、何回通信をするだろうか。 それに比べてリフレッシュトークンはアクセストークンが失われた時にしか使用されないので、リフレッシュトークンに比べて安全だと言える。 ということ。