HTTP > JWT リクエストを作成 モジュール

Adobe Workfront Fusion HTTP > JWT リクエストを作成 モジュールは、HTTP (S) リクエストをURLに送信し、すべての呼び出しでモジュールが署名するJSON Web Token (JWT)を使用して認証します。 その後、応答は、標準のHTTP > ​ リクエストを作成 モジュールと同じように処理されます。

このモジュールは、標準の​ リクエストを作成 モジュールと同様に動作します。主な違いは、提供したクレームからJWTに自動的に署名し、デフォルトでAuthorization: Bearer <token>としてリクエストに追加することです。

このモジュールを使用すると、別の手順でトークンを作成することなく、共有秘密(HMAC)または秘密鍵(RSA/ECDSA)で署名された短期間有効なベアラートークンを必要とするサービスなど、認証のために署名されたJWTを必要とするAPIを呼び出すことができます。

APIでOAuth 2.0、基本認証、API キー、またはクライアント証明書を使用する場合は、代わりに一致する専用のHTTP モジュールを使用します。

NOTE
現在、専用コネクタがないAdobe製品に接続する場合は、Adobe Authenticator モジュールを使用することをお勧めします。
詳しくは、Adobe Authenticator モジュールを参照してください。

アクセス要件

展開すると、この記事の機能のアクセス要件が表示されます。
table 0-row-2 1-row-2 2-row-2 3-row-2 layout-auto html-authored no-header
Adobe Workfront パッケージ

任意の Adobe Workfront Workflow パッケージと任意の Adobe Workfront Automation および Integration パッケージ

Workfront Ultimate

Workfront Fusion を追加購入した Workfront Prime および Select パッケージ。

Adobe Workfront ライセンス

標準

Work またはそれ以上

Adobe Workfront Fusion ライセンス

オペレーションベース:オペレーションベースのライセンスを持つ組織で使用できます

コネクターベース(レガシー):Workfront Fusion for Work Automation および Integration

製品 組織が Workfront Automation および Integration を含まない Select またはPrime Workfront パッケージを持っている場合は、Adobe Workfront Fusion を購入する必要があります。

この表の情報について詳しくは、ドキュメントのアクセス要件を参照してください。

Adobe Workfront Fusion ライセンスについて詳しくは、Adobe Workfront Fusion ライセンスを参照してください。

JWT接続の作成

モジュールにはJWT接続が必要です。 接続は、署名マテリアルを保存して、シークレット キーまたは秘密キーがシナリオに表示されないようにします。

FusionでのJWT接続の作成

  1. シナリオにHTTP > JWT リクエスト ​ モジュールを追加します。

  2. 「接続」フィールドの横にある「追加」をクリックします。

  3. 接続フィールドを設定します。

    table 0-row-2 1-row-2 2-row-2 layout-auto html-authored no-header
    接続名 接続に名前を入力します。
    アルゴリズム

    接続の署名アルゴリズムを選択します。

    • HS256
    • HS384
    • HS512
    • RS256
    • RS384
    • RS512
    • PS256
    • PS384
    • PS512
    • ES256
    • ES384
    • ES512
    秘密鍵

    署名キーを入力します。

    • HS* アルゴリズムの場合は、共有秘密文字列を使用します。
    • RS*、PS*およびES* アルゴリズムの場合は、PEM エンコードされた秘密鍵を使用します。
  4. 「続行」をクリックして接続を作成し、モジュールに戻ります。

IMPORTANT
JWT接続は、1つのアルゴリズムのみで署名します。 シナリオで複数の署名アルゴリズムが必要な場合は、各アルゴリズムに個別の接続を作成します。 これは、既存のスタンドアロン JWT アプリの動作と一致します。

HTTP > JWT リクエスト ​ モジュールとそのフィールドを作成する

HTTP > JWT リクエスト ​ モジュールを設定すると、Adobe Workfront Fusionは、モジュール UIに表示されるのと同じ順序で、以下に示すフィールドを表示します。 モジュール内の太字のタイトルは、必須フィールドを示します。 詳細設定としてマークされたフィールドは、詳細設定を表示​を選択しない限り非表示になります。

Connection
既存のJWT接続を選択するか、新しいJWT接続を作成します。
URL
リクエストのターゲット URL。
Method
GET、POST、PUT、PATCH、DELETEなどのHTTP メソッド。
Headers
キー/値形式のカスタムリクエストヘッダー。
Query String
キー/値形式のクエリ文字列パラメーター。
Body type
リクエスト本文のエンコード方法。 オプションには、Raw、application/x-www-form-urlencoded、multipart/form-dataなどがあります。
Parse response
有効にすると、Fusionは応答コンテンツタイプに基づいて応答本文を解析します。
JWT ペイロード (クレーム) ​
JWT ペイロードにクレームとして含まれるキー/値のペア。 予約された要求exp、iatおよびnbfは、NumericDate (Unixのエポックからの秒数)である必要があります。 要求の値はJSON タイプを保持するので、数値は数値のままになり、ブール値はブール値のままになります。
タイムアウト ​ (詳細)
リクエストのタイムアウトを秒単位で指定します(1~300)。 デフォルトは 40 秒です。
再試行回数 (詳細)
再試行可能なエラーが原因でリクエストが失敗した場合に、リクエストを再試行する回数を指定します。
Additional Retry Status Codes (advanced)
再試行可能として扱うHTTP ステータスコードを追加で指定します。
Share cookie with other HTTP modules (advanced)
このオプションを有効にすると、シナリオ内のすべての HTTP モジュールとサーバーから Cookie を共有できます。
自己署名証明書 (詳細)
自己署名証明書を使用してTLSを使用する場合は、証明書をアップロードします。
Reject connections that are using unverified (self-signed) certificates (advanced)
このオプションを有効にすると、未検証の TLS 証明書を使用している接続を拒否できます。
Follow redirect (advanced)
このオプションを有効にすると、3xx 応答で URL リダイレクトに従います。
複数の同じクエリ文字列キーのシリアル化を配列として無効にする (詳細)
デフォルトでは、Workfront Fusionは、同じURL クエリ文字列パラメーターキーの複数の値を配列として処理します。 例えば、www.test.com?foo=bar&foo=baz が www.test.com?foo[0]=bar&foo[1]=baz に変換されます。 このオプションをアクティブ化すると、この機能は無効になります。
Request compressed content (advanced)
このオプションを有効にすると、web サイトの圧縮バージョンを要求できます。 圧縮コンテンツをリクエストするヘッダーに、Accept-Encoding を追加します。
Use Mutual TLS (advanced)
このオプションを有効にすると、HTTP リクエストで相互 TLS を使用できます。
Sign Options (詳細)

リクエストに追加する各サインオプションについて、項目を追加をクリックし、パラメーターの名前と値を入力します。

JWT署名者に渡された追加オプション(expiresIn、issuer、audience、subject、keyidなど)。 expiresInなどの期間の値は、jsonwebtoken ライブラリによって解釈されます。 プレーン数はミリ秒単位で扱われるので、"1h"や"3600s"などの単位文字列を使用して明示的に指定します。 アルゴリズムは接続から取得され、ここで上書きすることはできません。

ヘッダー名 (詳細)
署名済みJWTを受け取るリクエストヘッダーの名前を入力またはマッピングします。 デフォルト:Authorization。 ヘッダー名にドット (.)を含めることはできません。これは、点線の名前が拒否され、リクエストログでマスクできないためです。
トークンタイプ ​ (詳細)
トークンの前に配置された認証スキーム(Bearerなど)を入力するか、マッピングします。 接頭辞なしで生のトークンを送信するには、この空白のままにします。

トークンの構築方法

  1. モジュールは、JWT ペイロード (要求) ​ フィールドで要求を収集します。
  2. expなどの予約済み要求, iat、およびnbf NumericDate値に変換されます。
  3. モジュールは署名オプション ​を適用し、接続のアルゴリズムを使用してトークンに署名します。
  4. 署名済みトークンは、​ ヘッダー名によって定義されたリクエストヘッダーに配置されます。
  5. ​ トークンタイプ ​が設定されている場合、モジュールはトークンの前にプレフィックスを追加します。 例えば、Bearer eyJ….
  6. リクエストが送信され、応答は標準のHTTP > ​ リクエストを作成 モジュールと同じように処理されます。

署名されたトークンは、デバッグログとエラーログで自動的にマスクされるので、公開されることはありません。

例

接続

  • アルゴリズム:HS256
  • 秘密鍵:my-shared-secret

モジュール設定

  • URL:https://api.example.com/v1/orders

  • メソッド:GET

  • JWT ペイロード(クレーム):

    • sub = service-account-42
    • iss = make-integration
  • 署名オプション:

    • expiresIn = 1h
  • ヘッダー名:Authorization

  • トークンタイプ:Bearer

結果

モジュールは、次のようなヘッダーでリクエストを送信します。

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

FAQ/gotchas

トークンの有効期限が短いのはなぜですか?

3600など、expiresInの番号を入力した可能性があります。 jsonwebtoken ライブラリは、平易な数値をミリ秒単位で解釈します。 代わりに、"1h"や"3600s"などの単位文字列を使用してください。

トークンはいつ作成されますか?

モジュールは、接続の作成時ではなく、モジュールが実行されるたびに新しいJWTに署名します。 接続には署名マテリアルとアルゴリズムのみが保存されるため、iatやexpなどのクレームは、そのモジュール実行の瞬間を反映しています。

リクエストが同じモジュール実行内で再試行された場合、Fusionは、各試行に対して新しいトークンに署名するのではなく、それらの再試行に対して同じ署名済みトークンを再利用します。 このため、非常に短いexpiresIn値は、再試行が発生する前に期限切れになり、既に期限切れのトークンを再試行して送信する可能性があります。 これを回避するには、"1h"や"3600s"などの明確な単位文字列を使用し、トークンの有効期間が短くなりすぎないようにします。

リクエストごとにアルゴリズムを変更できますか?

いいえ。 アルゴリズムは接続によって固定されます。 別のアルゴリズムが必要な場合は、別のJWT接続を作成します。

カスタムヘッダーでトークンを送信できますか?

はい。 ​ ヘッダー名 フィールドをカスタム名に設定しますが、ドット (.)を含めることはできません。

Bearerなしで生のトークンを送信できますか?

はい。 ​ トークンタイプ ​を空のままにします。

トークンはログに表示されますか?

いいえ。 署名されたトークンは、デバッグログとエラーログで自動的にマスクされます。

NOTE
テクニカルノート:署名はjsonwebtoken ライブラリを使用し、スタンドアロン JWT アプリの署名動作を反映するため、同じ入力でスタンドアロン JWT アプリと同じトークンが生成されます。
recommendation-more-help
workfront-fusion-help-workfront-fusion