レッスン 1
JWT とは何か
JSON Web Token の目的、構造、認証・認可フローでの位置づけを学びます。
JWT は JSON Web Token の略で、claim と呼ばれる情報をコンパクトな文字列として表すための形式です。認証済みユーザー、発行者、有効期限、対象 audience などを含めることができます。
JWT はよく認証・認可の文脈で使われますが、JWT そのものは「ログイン機能」ではありません。情報を表し、署名付きでやり取りできるトークン形式です。
3 つのパート
JWT は通常、ピリオドで区切られた 3 つの部分で構成されます。
header.payload.signature
- header: アルゴリズムやトークン種別
- payload:
sub、exp、issなどの claim - signature: トークンが改ざんされていないか確認するための署名
header と payload は Base64URL で表されているため、デコードすれば読めます。
デコードと信頼は別
JWT の payload が読めることと、その内容を信頼できることは別です。ブラウザー上のデコーダーで claim を見ることはデバッグに役立ちますが、アプリケーションで認可判断に使うには署名、発行者、audience、有効期限などの検証が必要です。
JWT を扱うときは「何が書かれているか」と「誰がどの条件で署名したか」を分けて考えることが重要です。