Zeitmarke
Eine Zeitmarke ist der Wert eines Objekts, der die Systemzeit an einem kritischen Punkt der Objekthistorie anzeigt.
Eine Zeitmarke wird in eine Nachricht eingeschlossen, um die Anfälligkeit einer Anwendung für Attacken durch Nachrichtenaufzeichnung und -wiederholung zu verringern. In Web-Services liegt eine Attacke durch Nachrichtenaufzeichnung und -wiederholung vor, wenn eine HTTP-Anforderung abgefangen und ihr Inhalt in ihrer ursprünglichen Form an den Provider zurückgesendet wird.

Für die WS-Sicherheitslaufzeiten von JAX-RPC und JAX-WS beträgt die Standardablaufzeit für Nachrichten für den Empfänger fünf Minuten, wenn in der Nachricht kein Wert angegeben ist. Wenn für einen bestimmten Client eine andere Ablaufzeit erforderlich ist oder Sie sich hinsichtlich des Standardwerts des Zielservice unsicher sind, müssen Sie für die Zeitmarke der abgehenden Nachricht einen entsprechenden Wert konfigurieren.

- Wenn die WS-Sicherheitslaufzeiten von JAX-RPC und JAX-WS eine Nachricht generieren oder konsumieren, wird der Schutz der Integrität der Zeitmarke nicht zwingend umgesetzt.
- Die WS-Security-Laufzeiten von JAX-RPC und JAX-WS haben keinen Standardwert für die Ablaufzeit der abgehenden Nachricht. Wenn Sie einen Wert für die Ablaufzeit der Nachricht in eine Nachricht einfügen möchten, müssen Sie sie konfigurieren. Die Laufzeit von JAX-WS hat zwar keinen Standardwert für die Ablaufzeit abgehender Nachrichten, Sie können einen solchen Wert jedoch in den allgemeinen Standardbindungen konfigurieren. Dieser Wert wird von allen Anwendungen auf der Ebene, für die die Standardbindungen gültig sind, abgerufen. Beispielsweise kann der Wert auf Zellen- oder Anwendungsebene abgerufen werden.
- Bei der Laufzeit von JAX-RPC wird der Wert für die Ablaufzeit der Zeitmarke in der Erweiterung des Web-Service-Implementierungsdeskriptors angegeben. Sie können die Erweiterung des Web-Service-Implementierungsdeskriptors in der Administrationskonsole nicht ändern, sondern nur anzeigen. Um die Erweiterung des Implementierungsdeskriptors zu ändern, müssen Sie ein Assembliertool verwenden und den Wert für die Ablaufzeit der Zeitmarke für eine JAX-RPC-Anwendung hinzufügen bzw. ändern.
- Wenn bezüglich der Nutzung einer Zeitmarke Einschränkungen bezüglich WS-Security vorhanden sind, muss der Client eine Zeitmarke senden.
- In WebSphere Application Server wird die Richtlinienzusicherung IncludeTimestamp durchgesetzt. Viele Service-Provider setzen zwar voraus, dass das Element <wsu:Timestamp> in der Anforderung enthalten ist, senden jedoch keines in der Antwort. Es ist auch möglich, dass in der Antwort überhaupt kein Sicherheitsheader (Security) enthalten ist und schon gar nicht eine Zeitmarke (Timestamp). Auf einem Client tritt der folgende Fehler auf, wenn IncludeTimestamp in der Richtlinie enthalten ist, aber keine Zeitmarke (Timestamp) in der Antwort zurückgegeben wird:
Zum Beheben des Problems konfigurieren Sie entweder den Service-Provider so, dass er eine Zeitmarke sendet, oder konfigurieren Sie den Client so, dass er keine Zeitmarke erfordert, indem Sie die angepasste Eigenschaft com.ibm.wsspi.wssecurity.consumer.timestampRequired in den WS-Security-Richtlinienbindungen auf false setzen. Weitere Informationen finden Sie unter Angepasste Eigenschaften für Web Services Security.CWWSS5730E: Die erforderliche Zeitmarke wurde nicht gefunden.
Die JAX-WS-WS-Security-Laufzeit erfüllt die Anforderung der Spezifikation OASIS WS-SecurityPolicy 1.2 bezüglich der erforderlichen Angabe einer Zeitmarke ("Timestamp Required"). Wenn Sie eine Anwendung so konfigurieren möchten, dass sie keine Zeitmarke für eingehende Nachrichten erfordert, wenn eine Zeitmarke für abgehende Nachrichten konfiguriert ist, können Sie die angepasste Eigenschaft "com.ibm.wsspi.wssecurity.consumer.timestampRequired" als angepasste WS-Security-Eigenschaft (Web Services Security) konfigurieren.
- Setzen Sie die Eigenschaft com.ibm.wsspi.wssecurity.timestamp.keyword auf SecurityFirst.
- Setzen Sie die Eigenschaft com.ibm.wsspi.wssecurity.timestamp.dialect auf http://www.ibm.com/websphere/webservices/wssecurity/dialect-was. Der Standardwert für com.ibm.wsspi.wssecurity.timestamp.dialect ist "dialect-was", aber die Eigenschaft muss explizit festgelegt werden, damit die gewünschte Funktion verwendet wird.