セッションとステートレスなトークン
CookieよりJWTがAPIに適している場面を学びます
「セッションとステートレスなトークン」はCoddyKit上の無料Flask Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFlask Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Flask Academyコースには全4レッスンが含まれています。
ユーザーを記憶する2つの方法
HTTPはリクエストの間でユーザーを記憶しません。ログイン状態を維持するには、サーバーにセッションを保存するか、クライアントに署名付きトークンを渡します。
セッションの仕組み
セッションを使うと、サーバーがログイン状態を保持し、ブラウザーにはセッションIDだけを格納した小さなCookieを渡します。リクエストごとに、サーバーがそのIDを検索します。🍪
セッションのコスト
サーバーが状態を保存するため、アクティブなユーザーをすべて記憶しておく必要があります。このサーバー側の状態は、複数のマシンで共有する際に負荷が大きく、扱いも難しくなります。
トークンによる仕組みの変化
トークン自体にユーザー情報を含め、サーバーが署名します。サーバーは何も保存する必要がなく、各リクエストで署名を検証するだけです。
ステートレスの意味
ステートレスとは、サーバーがクライアントの状態を保持しないことです。ユーザーを信頼するために必要な情報は、各呼び出しでトークンに含めて送信されます。
JWTを知る
JWT(JSON Web Token)は、標準的なステートレストークンです。コンパクトな署名付き文字列で、キーを持つサーバーならすぐに検証できます。
JWTの3つの部分
JWTはドットで区切られた3つの部分、つまりヘッダー、ペイロード、署名で構成されます。ヘッダーには、署名に使ったアルゴリズムが記載されます。
header.payload.signatureクレームはペイロードに入る
中央の部分にはクレームが含まれます。ユーザーIDや有効期限などの小さな情報です。暗号化ではなくエンコードされるだけなので、秘密情報は決して入れないでください。
{ "sub": "42", "exp": 1699999999 }署名が信頼性を作る
署名は、ヘッダー、ペイロード、そしてサーバーだけが知る秘密情報から作られます。1バイトでも変更すると、検証に失敗します。
トークンが有利な場合
トークンはAPIや、多数のサーバーにまたがってスケールするモバイルクライアントで特に有効です。呼び出し元の検証に共有セッションストアが必要ないためです。
セッションが適している場合
従来型のサーバーサイドレンダリングWebサイトでは、セッションの方が簡単で、無効化もしやすくなります。適切な選択は流行ではなく、アプリによって決まります。
確認してみましょう
トークン方式がステートレスになる理由を考えてみてください。
まとめ
セッションはサーバーに状態を保存しますが、JWTは署名付きの状態をクライアントに渡します。トークンはステートレスであり、スケーラブルなAPIに適しています。🚀
AI チューターと学ぶ Python — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「セッションとステートレスなトークン」レッスンは無料ですか?
はい。「セッションとステートレスなトークン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Flask Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Flask Academyコースには全4レッスンが含まれています。
「セッションとステートレスなトークン」で何を学びますか?
CookieよりJWTがAPIに適している場面を学びます ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Flask Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのFlask Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「セッションとステートレスなトークン」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このFlask Academyレッスンでコードを書いて実行できますか?
はい。すべてのFlask Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- セッションとステートレスなトークン
- ログイン時にアクセストークンを発行する
- jwt_requiredでエンドポイントを保護する
- リフレッシュトークンと有効期限