概要
OAuth2を用いたログイン認証を実装する機会があったので,その時に得た知見と気になったことをメモしていきます.OpenID connectについてはちょびっとしか書いてませんのでOpenID connectを知りたい人は対象外です.
OpenID connectとは
OAuth2について調べているとOpenID connectというものが出てきたのでOpenID connectについて調べました.大きな違いとしては,OAuth2がアクセストークンを返却するのに対して,OpenID connectでは加えてIDトークンも返却するって感じらしいです.ざっくり言えば,OAuth2に対してID連携に必要な拡張を施したものです.
- OAuth2 ← ランダム文字列返ってくる
- OpenID connect ← "ランダム文字列生成" + "ユーザ情報" 返ってくる
って感じかな?
OAuth2でログイン
ここからはOAuth2を用いたログイン認証について気になったことを述べていきます.最近流行りのTwitterでログインを実装することがあったとします.その場合,OAuth2を利用してアクセストークンを取得しセッションに記録してそれ以降そのセッションを使ってサーバとやりとりします.その時,DBのユーザテーブルに新しいレコード作ってアクセストークンを保存します.また,セキュリティの関係上有効期限を設けるものとします.
有効期限が切れた場合
ここで,アクセストークンの有効期限が切れた場合のことを考えます.その場合セッションに情報が残っている場合はどのユーザなのかは特定できるのでstateにユーザ情報をエンコードして載せるなどして再度アクセストークンを取得し,古いアクセストークンを書き換えればいいと思います.
セッション情報がない場合
Cookieの削除などでセッション情報がない場合に有効期限も切れて,,って場合はどうすればいいんでしょうか?最初のログイン後に,各ユーザに一意の情報の入力を促してそれをもとにユーザを特定すればいいの?詳しい人に情報求めます,,
まとめ
なんか知見があったらまた記事書きます!