こんにちは
今回はDjangoのSimpleJWTについてです!
そもそもJWTってなに?
JWT(JSON Web Token)は、ユーザーの認証情報を安全にやり取りするための仕組みです。
これを使うことで、サーバーにセッション情報を保存せずに、クライアント側(ユーザーのブラウザなど)で認証を行うことができます!
どうやって使われるの?
1. ユーザーがログインをする
ユーザーが自分のユーザー名とパスワードを使用してログインしようとします。
この情報をサーバーに送信すると、サーバーは情報が正しいか確認します。
2. トークンを取得する
ユーザー情報が正しければ、サーバーはユーザーに「アクセストークン」と「リフレッシュトークン」を返します。
- アクセストークン:APIリクエストに使用する短期間のトークン
- リフレッシュトークン:アクセストークンが期限切れになったときに新しいトークンを取得するために使うトークン
3. APIを利用する
ユーザーは取得したアクセストークンを使用してAPIにアクセスします。(APIにリクエストを送るときは、アクセストークンをヘッダーに含めます)
サーバーはこのトークンを確認して、ユーザーがそのリソースにアクセスできるか判断します。
4. トークンの更新
アクセストークンには有効期限があるため、期限が切れる前にリフレッシュトークンを使用して新しいアクセストークンを取得します。
これにより、ユーザーは再度ログインすることなく、継続的にAPIを利用できます。
ログアウト方法について
ユーザーがログアウトしたい場合、サーバーに「ログアウト」リクエストを送ります。
サーバーはそのリクエストに対して、関連するトークンを無効にします。(ブラックリストに追加するなど)
まとめ
DjangoのSimpleJWTを使った認証は、シンプルかつ効率的な認証を行えます。セッション情報を持たないため、特にスケーラブルなアプリケーションにはおすすめです!