sgcWebSockets 4.4.8 から、WebSocket クライアントや HTTP/2 クライアントなどのクライアントコンポーネントで JWT がサポートされます。
TsgcHTTP_JWT_Client コンポーネントは JWT トークンのエンコードと署名を行えます。WebSocket クライアント または HTTP/2 クライアント にアタッチすると、トークンが自動的に Authorization Bearer Token ヘッダーとして送信されます。
設定
JWT の値は JWTOptions プロパティで設定できます。主要なプロパティは 2 つあります:Header と Payload。必要な各プロパティに値を設定してください。
署名を秘密鍵で暗号化する場合(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;
