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 モジュールを使用します。
アクセス要件
| 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接続の作成
-
シナリオにHTTP > JWT リクエスト モジュールを追加します。
-
「接続」フィールドの横にある「追加」をクリックします。
-
接続フィールドを設定します。
table 0-row-2 1-row-2 2-row-2 layout-auto html-authored no-header 接続名 接続に名前を入力します。 アルゴリズム 接続の署名アルゴリズムを選択します。
HS256HS384HS512RS256RS384RS512PS256PS384PS512ES256ES384ES512
秘密鍵 署名キーを入力します。
HS*アルゴリズムの場合は、共有秘密文字列を使用します。RS*、PS*およびES*アルゴリズムの場合は、PEM エンコードされた秘密鍵を使用します。
-
「続行」をクリックして接続を作成し、モジュールに戻ります。
HTTP > JWT リクエスト モジュールとそのフィールドを作成する
HTTP > JWT リクエスト モジュールを設定すると、Adobe Workfront Fusionは、モジュール UIに表示されるのと同じ順序で、以下に示すフィールドを表示します。 モジュール内の太字のタイトルは、必須フィールドを示します。 詳細設定としてマークされたフィールドは、詳細設定を表示を選択しない限り非表示になります。
トークンの構築方法
- モジュールは、JWT ペイロード (要求) フィールドで要求を収集します。
expなどの予約済み要求,iat、およびnbfNumericDate値に変換されます。- モジュールは署名オプション を適用し、接続のアルゴリズムを使用してトークンに署名します。
- 署名済みトークンは、 ヘッダー名によって定義されたリクエストヘッダーに配置されます。
- トークンタイプ が設定されている場合、モジュールはトークンの前にプレフィックスを追加します。 例えば、
Bearer eyJ…. - リクエストが送信され、応答は標準のHTTP > リクエストを作成 モジュールと同じように処理されます。
署名されたトークンは、デバッグログとエラーログで自動的にマスクされるので、公開されることはありません。
例
接続
- アルゴリズム:
HS256 - 秘密鍵:
my-shared-secret
モジュール設定
-
URL:
https://api.example.com/v1/orders -
メソッド:
GET -
JWT ペイロード(クレーム):
sub=service-account-42iss=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なしで生のトークンを送信できますか?
はい。 トークンタイプ を空のままにします。
トークンはログに表示されますか?
いいえ。 署名されたトークンは、デバッグログとエラーログで自動的にマスクされます。
jsonwebtoken ライブラリを使用し、スタンドアロン JWT アプリの署名動作を反映するため、同じ入力でスタンドアロン JWT アプリと同じトークンが生成されます。