トランザクション・トークン

トランザクショントークンは、トラストドメイン内でのサービス間通信に対して安全な認証を提供するために設計された、有効期限が限定された専用の 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のお客様へ
  1. 管理コンソールにアクセスし、 「アプリケーション 」>「 STS クライアント」 を選択します。 「STSクライアントを追加」 をクリックします。
  2. トークン交換の設定 」のステップで、 「要求されるトークン」 のドロップダウンメニューから 「トランザクショントークン」 を選択してください。
    注: トランザクショントークンは、ユースケースに応じて、サブジェクトトークンまたはアクタートークンとして設定することも可能です。
  3. 「トークンの要求」設定のステップには、 トランザクションコンテキストを設定するためのオプションがあります。 このフィールドには、その出力が結果として生成されるトランザクショントークン内のクレーム tctx に直接マッピングされるCELx式を指定できます。 この式は、有効なJSONオブジェクトとして評価されなければなりません。 例えば、以下のとおりです。
    {
      "amount": "100.00",
      "currency": "USD",
      "merchant_id": "requestContext.subject_token.email"
    }
    注:トランザクションコンテキスト 」フィールドは、「要求されたトークン」「トランザクショントークン」 に設定されている場合にのみ表示されます。 このフィールドは、他のトークンタイプには適用されません。
  4. 残りの必須プロパティを設定し、 「保存」 をクリックして STS クライアントを作成します。
応募について
  1. 管理コンソールに移動し、 「アプリケーション 」>「 アプリケーション」 を選択します。 [ アプリケーションの追加] をクリックし、 OpenID Connect 関連のアプリケーションのいずれかを選択してください。
  2. [サインオン] タブで、[ トークン交換] セクションに移動します。 「 要求されたトークン」 のドロップダウンメニューから 「トランザクショントークン」 を選択してください。
    注: トランザクショントークンは、ユースケースに応じて、サブジェクトトークンまたはアクタートークンとして設定することも可能です。
  3. トランザクションコンテキストを、有効なJSONオブジェクトとして評価されるCELx式として設定します。 これは、生成されるトランザクショントークン内のクレーム tctx に直接対応付けられます。
    注:トランザクションコンテキスト 」フィールドは、「要求されたトークン」「トランザクショントークン」 に設定されている場合にのみ表示されます。 このフィールドは、他のトークンタイプには適用されません。
  4. 残りの必須プロパティを設定し、 「保存」 をクリックしてアプリケーションを作成します。

トランザクション・コンテキストのマッピング

トランザクショントークンの特徴の一つは、(トランザクションコンテキスト) クレームであり tctx 、これは実行中のトランザクションのコンテキストを定義する不変のクレームです。 トランザクショントークンが、その後のトークン交換フローにおいてサブジェクトトークンとして使用された場合、生成されるトークンには同じ tctx クレームが保持されるため、トランザクションのライフサイクル全体を通じて完全な追跡が可能となります。

トランザクションコンテキスト生成ロジック

IBM Verify 以下の優先順位ルールに基づいて、トランザクショントークンに対する請求額を tctx 決定します:
  1. CELx 式の定義 :トランザクションコンテキストの CELx 式が設定されている場合(前述のステップ 4 で説明した通り)、その式が評価され、その結果が tctx クレームとして使用されます。
  2. request_details リクエストの詳細 :CELx の表現が設定されておらず、トークン交換リクエストに パラメータが含まれている場合、 の request_details 値が クレーム tctx として使用されます。
  3. コンテキストが利用できない場合 :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式内で として参照できます。 実行時に計算された値を追加することで、このコンテキストを強化することができます:
requestContext.tctx.put("requestingUserName", user.userName)
CELxの構文に関する完全なドキュメントについては、『 属性関数ガイド』を参照してください。