日本語

開発者ツール · JWT デコーダー

JWT 比較した代替案: PASETO、ビスケット、マカロン、不透明トークン

· 背景

jwt 認証 アーキテクチャ

さまざまな信頼モデルと状態モデルに分岐するいくつかのトークン設計
オリジナル ToolAcre ベクトル イラスト

JWT の柔軟性はセキュリティ上の問題のほとんどの原因であり、それを取り除くためにいくつかの形式が設計されました。この投稿では、安全性と相互運用性に関して、PASETO、ビスケット、マカロン、およびプレーンな不透明トークンと JWT を比較します。

柔軟性の強力な武器 — JWT のアルゴリズムの俊敏性とオプションのクレームがどのようにして一連のバグを生み出したか

JWT は柔軟なヘッダーとオプションのクレームを公開します。これらは、アプリケーションがトークン入力を検証者ポリシーとして扱う場合に強力な武器となる可能性があります。適切な応答が自動的に別の形式になるわけではありません。まず、どの選択が不可能であるべきか、どの当事者がオフラインの決定を必要とするか、取り消しまたは委任国家がどこに属するかを特定します。

ToolAcre は、1 つの狭い JWT プロパティを示しています。つまり、3 部構成の署名付きペイロードは検証なしで読み取ることができます。代替案のベンチマークを行ったり、そのライブラリを認証したりすることはできません。したがって、この比較はアーキテクチャに関する質問を構成し、未検証のパフォーマンス、導入、成熟度に関する主張を省略しています。

PASETO は、バージョン管理されたプロトコルの選択を中心に設計されています。サポートの詳細はその実装に属します

PASETO は、一般に、自由形式の `alg` ヘッダーを運ぶのではなく、暗号化の選択肢を狭める、バージョン管理されたプロトコル ファミリとして提示されます。この設計方向により、アルゴリズム選択の間違いを減らすことができますが、正確なバージョン、目的、およびライブラリの動作を、展開する予定の実装で確認する必要があります。

JWT デコーダーは PASETO を読み取ったり検証したりできません。これを選択すると、ツール、相互運用性、キー管理の前提条件が変わります。 「alg ヘッダーがない」ことを完全なセキュリティ証明として扱うのではなく、その制約されたプロトコルが発行者および消費者の環境に一致するかどうかを評価します。

Biscuit は、減衰可能な認可を対象としています。このリポジトリはその機能セットを検証していません

Biscuit は、減衰可能な認可とトークン搬送ロジックに関連付けられています。これにより、フラットな JWT クレーム オブジェクトとは異なる委任モデルを提供できます。リポジトリには Biscuit パーサー、ベリファイア、テストが含まれていないため、この記事では詳細な構文、暗号化サポート、または動作のデフォルトについては保証しません。

下流の所有者がより広範な権限を取得せずに制限を追加する必要があるかどうか、ポリシーがどのように評価され、キーがどのように配布されるかを尋ねます。次に、選択した実装をテストします。 ToolAcre の JWT クレーム テーブルには同等の評価が提供されないため、機能の正確性を比較するために使用しないでください。

マカロンは警告指向の委任を使用します。実装保証はこのリポジトリの外にあります

マカロンは委任モデルとして警告を使用し、一般に連鎖認証で説明されます。これらは、単に JWT にロールやスコープを配置するのとは異なる形の権限に対処します。繰り返しになりますが、正確な保証と警告の処理ルールは、選択した実装とプロトコルのドキュメントに属します。

アーキテクチャ上の問題は、委任された制限が第一級の要件であるかどうかです。そうでない場合、より特殊なトークンを採用すると、メリットがなく複雑さが増す可能性があります。存在する場合は、依存関係をデコード画面に平坦化するのではなく、検証をモデル化して明示的に解消します。

イントロスペクションを備えた不透明なトークン — フォーマットはまったくなく、往復のコストがかかります

不透明なトークンは、設計上、クライアントが読み取り可能なクレーム構造を明らかにしません。リソース サーバーは、発行者またはイントロスペクション サービスに問い合わせて、現在の状態と権限を知ることができます。この往復により、可用性と遅延の依存関係が追加され、取り消しやポリシーの変更に役立つ中心的な意思決定ポイントが復元されます。

不透明な値を Web サイトに記録したり貼り付けたりするのは安全ではありません。まだ署名者の資格情報である可能性があります。 ToolAcre は、内容を推測するのではなく、不正な形式の JWT 入力として拒否する必要があります。公開デコードではなく、信頼できるインフラストラクチャからの発行者制御のイントロスペクションを使用します。

JWT が依然として優れている点 — ID プロバイダーおよび OpenID Connect エコシステムとの相互運用性

JWT は、既存の ID プロバイダー、クライアント、およびリソース サーバーが既にそのエコシステムとプロファイルを共有している場合には魅力的です。相互運用性は、よりクリーンなグリーンフィールド制約セットの利点を上回る可能性があります。その利点は依然として、規律あるアルゴリズム、キー、発行者、対象者、およびトークンタイプの強制に依存します。

読み取り可能なペイロードはデバッグもサポートしていますが、その利便性により開示リスクが増加します。 ToolAcre は検査には協力しますが、意図的に検証を拒否します。 JWT を選択した組織は、信頼性を使い慣れたツールにアウトソーシングするのではなく、検証ツールの構成とネガティブ テストに予算を計上する必要があります。

これでカバーされないもの — 各言語のパフォーマンスとライブラリの成熟度。変化が早すぎて特定できない

この比較では、パフォーマンス ランキングと言語ライブラリの成熟度は省略されています。これらの事実は変化しており、リポジトリの証拠によって確立されていないためです。また、代替手段によってキーの保管、資格情報の盗難、認可モデリング、運用監視が自動的に解決されるという主張も避けられます。

ターゲット言語の現在のライブラリ、メンテナンス方法、プロファイル、インシデント対応、統合の制約を評価します。脅威モデルにとって重要な受け入れパスと拒否パスのプロトタイプを作成します。フォーマット名は実行可能な証拠の代わりにはなりません。

要点: 必要な制約を選択します。JWT に到達した場合、ToolAcre JWT デコーダーが検査ツールになります。代替案には独自のものが必要です

必要な制約を選択します。アルゴリズムの機敏性が不要な場合は、望ましくない選択を難しくする設計を好みます。中央での取り消しが不可欠な場合は、州を含めます。減衰が中心の場合は、委任に重点を置いたシステムを評価します。エコシステムの互換性が優先される場合は、JWT を厳密に制限します。

ToolAcre は、JWT ブランチのみの検査ツールです。代替案をデコードすることも、JWT が信頼できることを証明することもありません。どちらの設計が採用されるにせよ、資格情報の受け入れは、明示的なポリシーとテスト済みの失敗動作を備えた信頼できるソフトウェアで行われる必要があります。