トランザクション・トークン
トランザクショントークンは、トラストドメイン内でのサービス間通信に対して安全な認証を提供するために設計された、有効期限が限定された専用の OAuth 2.0 トークンです。 IETFの仕様草案( draft-ietf-oauth-transaction-tokens )に基づき、これらのトークンは、特定のトランザクションに関する不変のコンテキストおよび認証情報を保持する、署名付きJWTです。
注: トランザクショントークンはリクエスト可能な機能です。 VDEV-186514: 「AIエージェントのセキュリティ確保」。 この機能をご希望の場合は、 IBM の営業担当者、または IBM の担当者までご連絡いただき、本機能の有効化をご希望であることをお伝えください。 権限をお持ちの場合は、機能番号を明記してサポートチケットを作成することも可能です。 IBM® Verify 無料体験版をご利用のお客様は、サポートチケットを作成することはできません。
トランザクショントークンについて
現代のマイクロサービスアーキテクチャでは、1つの外部リクエストが、複数のサービスが関与する内部ワークフローをトリガーすることがよくあります。 トランザクショントークンは、以下の機能を提供することで、こうしたシナリオにおけるセキュリティ上の課題に対処します
tctx不変のトランザクションコンテキスト :(トランザクションコンテキスト)クレームには、呼び出しチェーン全体を通じて変更できないトランザクション固有の情報が含まれており、これによりパラメータの改ざんを防止します。- 完全なトレーサビリティ :各トランザクショントークンには一意のトランザクション識別子(
txnクレーム)が含まれており、リクエストの処理に関与するすべてのサービスにわたるエンドツーエンドの追跡が可能になります。 - ワークロード認証 :(リクエスター・ワークロード) クレームは
req_wl、そのトランザクションを処理したすべてのワークロードの連鎖を保持しており、これにより、呼び出しパスに基づいた正確な認証判断が可能になります。 - コンテキストの保持 :トランザクショントークンが後続のトークン交換(置換トークン)においてサブジェクトトークンとして使用される場合、トランザクションのコンテキストと識別子が保持され、ワークフロー全体にわたる一貫性が確保されます。
トランザクショントークンの設定 IBM Verify
トランザクショントークンは、標準の OAuth 2.0 トークン交換フローを通じてリクエストすることができ、STSクライアントまたは OpenID Connectアプリケーションのいずれかを使用して設定できます。
- STSのお客様へ
- 管理コンソールにアクセスし、 を選択します。 「STSクライアントを追加」 をクリックします。
- 「 トークン交換の設定 」のステップで、 「要求されるトークン」 のドロップダウンメニューから 「トランザクショントークン」 を選択してください。注: トランザクショントークンは、ユースケースに応じて、サブジェクトトークンまたはアクタートークンとして設定することも可能です。
- 「トークンの要求」設定のステップには、 トランザクションコンテキストを設定するためのオプションがあります。 このフィールドには、その出力が結果として生成されるトランザクショントークン内のクレーム
tctxに直接マッピングされるCELx式を指定できます。 この式は、有効なJSONオブジェクトとして評価されなければなりません。 例えば、以下のとおりです。{ "amount": "100.00", "currency": "USD", "merchant_id": "requestContext.subject_token.email" }注: 「 トランザクションコンテキスト 」フィールドは、「要求されたトークン」 が 「トランザクショントークン」 に設定されている場合にのみ表示されます。 このフィールドは、他のトークンタイプには適用されません。 - 残りの必須プロパティを設定し、 「保存」 をクリックして STS クライアントを作成します。
- 応募について
- 管理コンソールに移動し、 を選択します。 [ アプリケーションの追加] をクリックし、 OpenID Connect 関連のアプリケーションのいずれかを選択してください。
- [サインオン] タブで、[ トークン交換] セクションに移動します。 「 要求されたトークン」 のドロップダウンメニューから 「トランザクショントークン」 を選択してください。注: トランザクショントークンは、ユースケースに応じて、サブジェクトトークンまたはアクタートークンとして設定することも可能です。
- トランザクションコンテキストを、有効なJSONオブジェクトとして評価されるCELx式として設定します。 これは、生成されるトランザクショントークン内のクレーム
tctxに直接対応付けられます。注: 「 トランザクションコンテキスト 」フィールドは、「要求されたトークン」 が 「トランザクショントークン」 に設定されている場合にのみ表示されます。 このフィールドは、他のトークンタイプには適用されません。 - 残りの必須プロパティを設定し、 「保存」 をクリックしてアプリケーションを作成します。
トランザクション・コンテキストのマッピング
トランザクショントークンの特徴の一つは、(トランザクションコンテキスト) クレームであり tctx 、これは実行中のトランザクションのコンテキストを定義する不変のクレームです。 トランザクショントークンが、その後のトークン交換フローにおいてサブジェクトトークンとして使用された場合、生成されるトークンには同じ tctx クレームが保持されるため、トランザクションのライフサイクル全体を通じて完全な追跡が可能となります。
トランザクションコンテキスト生成ロジック
IBM Verify 以下の優先順位ルールに基づいて、トランザクショントークンに対する請求額を
tctx 決定します:- CELx 式の定義 :トランザクションコンテキストの CELx 式が設定されている場合(前述のステップ 4 で説明した通り)、その式が評価され、その結果が
tctxクレームとして使用されます。 request_detailsリクエストの詳細 :CELx の表現が設定されておらず、トークン交換リクエストに パラメータが含まれている場合、 のrequest_details値が クレームtctxとして使用されます。- コンテキストが利用できない場合 :CELx式も も
request_details指定されていない場合、そのtctxクレームはトランザクショントークンから省略されます。
CELx の使用例
以下の例は、一般的なシナリオにおけるトランザクション・コンテキスト ・マッピングの CELx 式を示しています
- シナリオ 1:完全なトランザクションコンテキストの定義
- この例では、tctx クレーム用の完全な JSON ペイロードを定義しています。 主語および行為者トークンのクレームは、CELxにおいてそれぞれ requestContext.subjectToken および requestContext.actorToken として利用可能です:
{ "amount": "100.00", "currency": "USD", "merchant_id": "requestContext.subject_token.email" } - シナリオ 2:実行時の値を用いてリクエストの詳細情報を充実させる
requestContext.tctxトークン交換リクエストからのパラメータはrequest_details、CELx式内で として参照できます。 実行時に計算された値を追加することで、このコンテキストを強化することができます:
CELxの構文に関する完全なドキュメントについては、『 属性関数ガイド』を参照してください。requestContext.tctx.put("requestingUserName", user.userName)