JWT認証を学ぶ
JWTを学ぶにあたり、最初にAuth.jsをさわってみたのですが便利な分ブラックボックスで身にならないような気がしたのでJWTについて調べました。今回は学習したことをアウトプットします。
JWTとは
JSON Web Token (JWT) をざっくり一言で表すなら、JSON形式のデータに『デジタルな署名』を付与したデータ転送用の規格といえます。JWTが認証で使われるのは、このJSONにデジタルな署名をつけてくれる点がいいからです。JWTを用いた認証の流れは以下のような流れです。※画像はこちらの記事から引用させていただきました。

ユーザーのログインが成功すると、サーバーはユーザーIDなどの情報を含めたJSONデータを作成し、サーバーだけが知っている「暗号鍵(秘密鍵)」を使って、そのJSONに『デジタルな署名』を施したもの(JWT)を返します。
クライアント(ブラウザ等)はこのJWTを保持し、以降のリクエストの際にヘッダー等に付与して送信します。サーバーは受け取ったJWTが自身の持つ暗号鍵で作成されたものか(改ざんされていないか)を検証します。サーバーが「正しい権限を持ったユーザーからのリクエストである」と判断できればリクエストが成功します。
なんかつかれたのでおわり
今回暗号化やJWS周りの構成要素を省いた超ざっくりな内容になってしまった。
実装編もやる気があるときに書きたい!
参考にさせていただいた記事
https://developer.mamezou-tech.com/blogs/2022/12/08/jwt-auth
https://zenn.dev/tanimoto915/articles/edd571c44a84bb#1.-cookie-の構造と役割