このプロジェクトについて

jwt-goは、RFC 7519で定義されたJSON Web Token(JWT)を実装する、本番環境対応のGoライブラリです。JWTのパース、検証、生成、署名を包括的にサポートし、Goアプリケーションにおける認証と認可の基盤ツールとして機能します。 このライブラリは、HMAC SHA、RSA、RSA-PSS、ECDSAを含む複数の署名アルゴリズムをサポートし、カスタム署名メソッドを追加するためのフックも用意されています。セマンティックバージョニング2.0.0に従い、本番環境での使用に安定していると見なされています。 主な機能は以下の通りです: - JWTのパースと検証 - JWTの生成と署名 - HMAC SHA、RSA、RSA-PSS、ECDSA署名アルゴリズムのサポート - SigningMethodインターフェースを介したカスタム署名メソッドを可能にする拡張可能なアーキテクチャ - サードパーティの鍵管理サービス(GCP、AWS KMS、TPM、JWKS)との統合ポイント - セキュリティを重視した設計で、非セキュアなJWT(alg=none)には明示的なオプトインが必要 - トークンの作成、パース、デバッグのためのコマンドラインユーティリティ(cmd/jwt) このプロジェクトは、元の作者がオープンソースメンテナの専任チームへの移行を提案した後、dgrijalva/jwt-goのフォークとして始まりました。バージョンv4.0.0ではGoモジュールサポートが導入され、v3.x.yタグとの後方互換性が維持されました。バージョンv5.0.0ではトークン検証に大幅な改善がもたらされましたが、完全な後方互換性はありません。 このライブラリは、JWTライブラリの重大な脆弱性を防ぐための「alg」パラメータの検証を含む、セキュリティのベストプラクティスを重視しています。また、古いバージョンのGoのcrypto/ellipticパッケージにセキュリティ問題があるため、Go 1.15以降へのアップグレードを推奨しています。 RFC 7519への準拠は維持されていますが、注目すべき違いとして、alg=noneを使用するトークンは、jwt.UnsafeAllowNoneSignatureType定数がキーとして提供された場合にのみ受け入れられ、非セキュアなJWTの誤用を防ぎます。 このプロジェクトには、広範なドキュメント、例、専用のドキュメントウェブサイトが含まれています。また、カスタム署名メソッドや鍵関数を追加するための必要なコンポーネントもすべて公開されており、クラウドプロバイダー統合やハードウェアセキュリティモジュールなど、さまざまなユースケースに対応できる高い拡張性を備えています。