4D NetKit:JWTのデコード、生成、検証

Deeplからの自動翻訳

JSON Webトークン(JWT)は、セキュアな認証とシステム間の情報交換のための重要な標準となっています。JWTを使用すると、安全で検証可能な標準化された方法でデータを送信でき、セキュリティを向上させながら複雑さを軽減できます。特に、JWTはOpenID Connectを使用する際に不可欠であり、OpenIDプロバイダから返される情報を検証し、デコードすることができます。

4D 21では、4D NetKitがこれらのトークンを扱うためのシンプルなAPIを提供しています。

アプリケーションはいつJWTを受け取るのか?

JWTは通常、認証や認可の過程で受け取ります。例としては以下のようなものがあります:

  • ユーザーがOpenID Connectプロバイダーを通してログインした後。

  • 外部APIがそのリソースへのアクセスを許可するためにトークンを返すとき。

  • サービス間通信において、あるサーバーが別のサービスに対してJWTを発行し、IDや権限を確認する場合。

これらすべてのシナリオにおいて、アプリケーションはトークンを使用する前にデコードと 検証を行う必要があります。

JWTのデコードと検証

アプリケーションがJWTを受け取ると、通常2つのステップが必要になります:

  1. トークンをデコードしてその内容(クレーム)を検査する。
  2. トークンが改ざんされておらず、本当に信頼できるソースからのものであることを確認するための検証
var $JWT:=cs.NetKit.JWT.new()

// Decode the JWT token: this method extracts the token’s contents
// (such as header, payload, and signature) without necessarily verifying its validity
var $result := $JWT.decode($token)

// Validate the token: this step checks that the token is correctly signed with the provided key 
var $isValid:= $JWT.validate($token; $key)

JWTの生成

デコードと検証に加えて、独自のJWTを生成する必要があるかもしれません。例えば、クライアントにトークンを発行するシステムを構築する場合や、外部APIで認証するためのトークンを作成する場合などです。

// Define the JWT claims object, starting with the header
var $claims:={header: {alg: "HS256"; typ: "JWT"}}
// Define the payload (the data carried by the token)
$claims.payload:={sub: "123456789"; name: "John"; exp : 50}

// Generate the JWT token using the claims and a private key
// The resulting token ($token) will be a signed string that can be sent securely
var $token := cs.NetKit.JWT.new().generate($claims; $privateKey)

これによって、セキュアなやり取りを行うための署名付きトークンが生成される。

結論

NetKit.JWT クラスは、トークンのデコード、検証、生成のためのシンプルな API を 4D 21 に提供します。開発者が安全な認証フローを実装し、OpenID プロバイダと統合し、 モダンで標準ベースのアプリケーションを作成するのに役立ちます。

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。