JWTのメリット
単純なWebトークン(SWT)やトークンと比較すると、JWTには次のような使用上のメリットがあります。- コンパクト :JSONはXMLよりも冗長性が低いため、エンコードされた場合、JWTはSAMLトークンよりもサイズが小さくなります。このため、HTMLやHTTP環境で渡すにはJWTが適しています。

- 安全 :署名を行う際、JWTはX.509証明書の形式の公開鍵/秘密鍵ペアを使用できます。またJWTは、HMACアルゴリズムを使用して共有秘密鍵で対称的に署名することもできます。さらに、SAMLトークンもJWTのような公開鍵/秘密鍵ペアを使用できますが、不明瞭なセキュリティホールを生じさせずにXMLデジタル署名を使用してXMLに署名することは、JSONに署名する場合のシンプルさと比較すると非常に困難です。JWTの署名アルゴリズムについて、詳しくお読みください。
- 一般的 :JSONのパーサーはオブジェクトに直接マッピングできるため、ほとんどのプログラミング言語で一般的です。逆に、XMLにはドキュメントからオブジェクトへの自然なマッピングがありません。このため、SAMLアサーションよりもJWTの方が、扱いが簡単です。
- 処理しやすい :JWTはインターネット規模で使用されます。つまり、ユーザーのデバイス、特にモバイルでの処理が容易になります。
JWTを使用する
JWTはさまざまな方法で使用できます。- 認証 :ユーザーが資格情報を使ってログインに成功すると、IDトークンが返されます。OpenID Connect(OIDC)の仕様によると、IDトークンは常にJWTです。
- 認可 :ユーザーがログインに成功すると、アプリケーションはそのユーザーに代わってルート、サービス、リソース(APIなど)へのアクセスを要求することがあります。そのためには、すべての要求でアクセストークンを渡す必要がありますが、これはJWTの形式である場合もあります。シングルサインオン()では、形式のオーバーヘッドが小さく、異なるドメイン間で簡単に使用できるという理由から、JWTが広く使用されています。
- 情報交換 :JWTは署名が可能で、送信者が本人であることを確信できるため、当事者間で情報を安全に送信するのに適した方法です。さらに、JWTの構造自体からも、コンテンツが改ざんされていないことを確認できます。