JWT Delphi クライアント

· コンポーネント

sgcWebSockets 4.4.8 から、WebSocket クライアントや HTTP/2 クライアントなどのクライアントコンポーネントで JWT がサポートされます。

TsgcHTTP_JWT_Client コンポーネントは JWT トークンのエンコードと署名を行えます。WebSocket クライアント または HTTP/2 クライアント にアタッチすると、トークンが自動的に Authorization Bearer Token ヘッダーとして送信されます。


設定 

 JWT の値は JWTOptions プロパティで設定できます。主要なプロパティは 2 つあります:HeaderPayload。必要な各プロパティに値を設定してください。

署名を秘密鍵で暗号化する場合(RS と ES アルゴリズム)、アルゴリズムの PrivateKey プロパティに値を設定します。

署名をシークレットで暗号化する場合(HS アルゴリズム)、アルゴリズムの Secret プロパティに値を設定します。

カスタムヘッダー 

Header と Payload プロパティには JWT 生成に使われる最も一般的なヘッダーが含まれていますが、AddKeyValue メソッドを呼び出して Key と Value をパラメーターとして渡すことで、ヘッダーを追加できます。

例: JWT ヘッダーに名前を含む新しいレコードを追加したい場合、以下のメソッドを使用します。

Header.AddKeyValue('name', 'John Smith');

プロパティを設定したら、JWT を生成するには Sign メソッドを呼び出すだけで JWT の値が返されます。

WebSocket クライアントと JWT 

TsgcWebSocketClient では、WebSocket サーバーへの接続時に JWT を使用できます。新しい JWT クライアントを作成し、Authentication.Token.JWT プロパティに割り当てるだけです。

oClient := TsgcWebSocketClient.Create(nil);
oClient.URL := 'wss://www.esegece.com:2053';
oJWT := TsgcHTTP_JWT_Client.Create(nil);
oJWT.Header.alg := jwtRSA256;
oJWT.Payload.sub := '1234567890';
oJWT.Payload.iat := 1516239022;
oClient.Authentication.Enabled := True;
oClient.Authentication.URL.Enabled := False;
oClient.Authentication.Token.Enabled := True;
oClient.Authentication.Token.JWT := oJWT;
oClient.Active := True;