投稿日:2024/11/24 最終更新日:2024/11/24
NextAuthとJWTを使用した認証を設定してみる
JWT(JSON Web Token)認証とは?
JSONデータに署名や暗号化をするための規格をもとに行うトークンベースの認証です。
通常ウェブサイトやアプリなどでよく見られるのはセッションによる認証かと思います。
セッションによる認証はユーザーのログイン状態などの情報をアプリケーション側で保持するか仕組みです。
JWTをはじめとするトークンベースの認証の場合はアプリケーション側でこの情報を保持しません。
検証する場合はHTTPリクエストなどで都度トークンを含めて送信して有効かどうかを検証する仕組みになっています。
JWTのメリット
・共通鍵暗号方式の署名を使うため、改ざんを検知できて安全性が高い
・NEXTAUTHでも利用できモダンフロントエンドで楽に使用できる
・認証がシンプルになる
認証の流れ
よくあるログイン認証を元にまとめます。
ログインしていない場合
1.JWTがない場合はユーザーによるログイン
2.ログインの入力情報がDBと整合しているか検証
3.認証成功後に入力情報をもとにJWTを作成
4.JWTはユーザーのブラウザなどに保存される
ログインしている場合
1.JWTがあることを確認
2.HTTPリクエストにJWTを含めて送信して有効か検証
3.有効である場合は認証成功となる(トップページにリダイレクトしてログイン情報を表示させるなど)
NextAuthとは?
Next.jsなどて楽に利用ができるオープンソース認証ライブラリのことです。
DBを必要としない認証が可能なため先ほどのJWTを利用した形での認証で合わせて使えます。
また、OAuthだけでなくSNS認証なども設定できることもメリットかと。
実際に使ってみる
※後々まとめます