タイム・スタンプ
タイム・スタンプ は、 オブジェクトのヒストリーにおける重要時点のシステム時刻を 示す、オブジェクトの値です。
タイム・スタンプは、リプレイ・アタックに対するアプリケーションの ぜい弱性を軽減するため、メッセージに組み込まれます。リプレイ・アタックは、Web サービス で HTTP 要求がインターセプトされ、内容が元の形式のままプロバイダーに 再送されるときに発生します。

JAX-RPC ランタイムと JAX-WS WS-Security ランタイムの両方で、メッセージ中に値が指定されていない場合に 受信側に使用される、デフォルトのメッセージ有効期限時間は 5 分 です。特定のクライアントではこれと異なる有効期限が必要な場合、 または、ターゲット・サービスのデフォルト値が不明な場合、 アウトバウンド・タイム・スタンプのメッセージ有効期限時間の値を 構成してください。

- Web Services Security JAX-RPC ランタイムおよび JAX-WS ランタイムは、 メッセージを生成またはコンシュームするとき、タイム・スタンプの整合性 が保護されることを強制しません。
- Web Services Security JAX-RPC ランタイムおよび JAX-WS ランタイムには、 アウトバウンド・メッセージ有効期限のデフォルト値はありません。メッセージ 有効期限値をメッセージに組み込むには、有効期限を構成する必要があります。JAX-WS ランタイム にはアウトバウンド・メッセージ有効期限のデフォルト値はありませんが、 アウトバウンド・メッセージ有効期限値をデフォルト汎用バインディング内に 構成することができます。この値は、デフォルト・バインディング が適用されるレベルのすべてのアプリケーションによって取得されます。例えば、 この値は、セル・レベルで取得されたり、アプリケーション・レベルで取得されたりします。
- JAX-RPC ランタイムの場合、タイム・スタンプ有効期限値は、 Web サービスのデプロイメント記述子拡張に指定されます。Web サービスのデプロイメント記述子拡張を 管理コンソールから変更することはできず、表示することしか できません。デプロイメント記述子拡張を変更するには、 アセンブリー・ツールを使用し、JAX-RPC アプリケーションのタイム・スタンプ 有効期限値を追加または変更する必要があります。
- タイム・スタンプをコンシュームするための WS-Security 制約 が存在する場合、クライアントはタイム・スタンプを送信する必要があります。
- WebSphere® Application Server は、IncludeTimestamp ポリシー・アサーションを強制します。 ただし、多くのサービス・プロバイダーは、要求にその <wsu:Timestamp> エレメントを必要としますが、応答ではそれを送信しません。 応答内にまったくセキュリティー・ヘッダーがなく、タイム・スタンプもない可能性もあります。 IncludeTimestamp がポリシーにあるが、応答でタイム・スタンプが戻されない場合、クライアントで次のエラーが発生します。
この問題を解決するには、タイム・スタンプを送信するようにサービス・プロバイダーを構成するか、 WS-Security ポリシー・バインディングで com.ibm.wsspi.wssecurity.consumer.timestampRequired カスタム・プロパティーを false に設定することで、タイム・スタンプを必要としないようにクライアントを構成してください。 詳しくは、Web Services Security のカスタム・プロパティーを参照してください。CWWSS5730E: A required timestamp is not found.
JAX-WS WS-Security ランタイムは、OASIS WS-SecurityPolicy 1.2 仕様の「Timestamp Required」要件に準拠しています。 アウトバウンド・タイム・スタンプが構成されている場合にインバウンド・タイム・スタンプを要求しないようにアプリケーションを構成するには、com.ibm.wsspi.wssecurity.consumer.timestampRequired カスタム・プロパティーをインバウンドまたはインバウンド/アウトバウンドの Web Services Security のカスタム・プロパティーとして追加できます。
JAX-WS ランタイムは常に、タイム・スタンプを最初に配置しますが、JAX-RPC ランタイムはそのようにはなっていません。JAX-RPC WS-Security 1.0 ランタイムを使用し、セキュリティー・ヘッダーで最初にタイム・スタンプを送出する場合は、以下を行う必要があります。
- プロパティー com.ibm.wsspi.wssecurity.timestamp.keyword に SecurityFirst を設定します。
- プロパティー com.ibm.wsspi.wssecurity.timestamp.dialect を http://www.ibm.com/websphere/webservices/wssecurity/dialect-was に設定します。 com.ibm.wsspi.wssecurity.timestamp.dialect のデフォルト値は dialect-was ですが、希望する機能を作動させるには、このプロパティーは明示的に設定する必要があります。