用語集

    GLOSSARY

    JWT(JSON Web Token)

    JWT(JSON Web Token、一般的にジョットと発音されます)とは、Webアプリケーションやシステム間で、ユーザーの識別情報や権限などのデータを安全にやり取りするための標準的なデータフォーマット規格です。主に、Webサイトにログインした後の認証状態の維持や、スマートフォンのアプリからサーバーのAPIを呼び出す際の本人確認などに広く利用されています。

    従来の一般的な認証仕組みでは、ユーザーがログインするとサーバー側にセッションと呼ばれるデータを保存し、ユーザーからのアクセスがあるたびにデータベースへ問い合わせて本人かどうかを確認していました。しかし、JWTを用いた手法では、ユーザーの情報自体を特殊なトークンと呼ばれる文字列に変換し、それをクライアント側(ブラウザやアプリ)に保持させます。サーバー側は、送られてきたトークンが正しい手続きで作られたものであるかを検証するだけで済むため、都度データベースにアクセスする手間が省けます。これにより、サーバーの処理負荷を大幅に削減できるだけでなく、複数のサーバーにまたがる大規模なシステムでもスムーズに認証を引き継げるという強力なメリットが生まれます。

    このJWTの文字列は、ドットで区切られた3つのパートで構成されています。1つ目はトークンの種類や署名アルゴリズム(署名方式)を示すヘッダー、2つ目はユーザーIDや有効期限といったデータの実体が含まれるペイロード、そして3つ目がデータが途中で書き換えられていないかを証明するための署名です。これら3つの情報がひとつの長い文字列にまとめられてやり取りされます。

    JWTを利用する際、運用上、注意しなければならないのはセキュリティの性質です。JWTのヘッダーとペイロードに含まれるデータは、一見すると複雑な英数字の羅列に見えますが、これは暗号化されて隠されているわけではなく、特定の規則に沿ってデータ形式を変換しているだけに過ぎません。そのため、専用のツールを使えば誰でも簡単に中身を元のテキストに戻して読むことができます。つまり、JWTの署名機能はデータの改ざんを防ぐためのものであり、データを盗み見られるのを防ぐものではありません。この性質上、パスワードやクレジットカード番号、個人の機密情報などは絶対にJWTの中に含めてはならないというルールがあります。

    近年のモダンなWeb開発やクラウドサービス、スマートフォンアプリのバックエンドシステムにおいて、このJWTはシンプルかつ効率的に安全な認証を実現するための必須の標準技術として定着しています。

    用語検索