JSON Webトークン(JWT)は、セキュアな認証とシステム間の情報交換のための重要な標準となっています。JWTを使用すると、安全で検証可能な標準化された方法でデータを送信でき、セキュリティを向上させながら複雑さを軽減できます。特に、JWTはOpenID Connectを使用する際に不可欠であり、OpenIDプロバイダから返される情報を検証し、デコードすることができます。
4D 21では、4D NetKitがこれらのトークンを扱うためのシンプルなAPIを提供しています。
アプリケーションはいつJWTを受け取るのか?
JWTは通常、認証や認可の過程で受け取ります。例としては以下のようなものがあります:
-
ユーザーがOpenID Connectプロバイダーを通してログインした後。
-
外部APIがそのリソースへのアクセスを許可するためにトークンを返すとき。
-
サービス間通信において、あるサーバーが別のサービスに対してJWTを発行し、IDや権限を確認する場合。
これらすべてのシナリオにおいて、アプリケーションはトークンを使用する前にデコードと 検証を行う必要があります。
JWTのデコードと検証
アプリケーションがJWTを受け取ると、通常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 プロバイダと統合し、 モダンで標準ベースのアプリケーションを作成するのに役立ちます。
