Standardkonfiguration für Web Services Security

Eine WS-Security-Konfiguration (Web Services Security) ergänzt die WS-Security-Richtlinie zur Ausführungszeit. Die WS-Security-Konfiguration wird mit CXF-Name/CXF-Wert-Paaren definiert und behält den CXF-Eigenschaftsnamen bei. Einige Eigenschaften haben Standardwerte, andere nicht.

WebSphere Application Server Liberty stellt in der Datei server.xml eine Konfiguration auf Serverebene bereit, die auf alle Services angewendet wird. Diese Konfiguration wird als WS-Security-Standardkonfiguration bezeichnet.

Die Datei server.xml hat zwei WS-Security-Standardkonfigurationen: eine für Clientanwendungen und eine für Provideranwendungen. Darüber hinaus können kann die Datei server.xml keine weiteren WS-Security-Konfigurationen enthalten. Wenn Sie für Ihre Anwendung eine vom Standard abweichende angepasste WS-Security-Konfiguration benötigen, muss die Konfiguration programmgesteuert erfolgen.

Das folgende Beispiel zeigt eine Standardclientkonfiguration:
<wsSecurityClient id="default"
                  ws-security.username="user2"
                  ws-security.password="security">
  <signatureProperties org.apache.ws.security.crypto.merlin.keystore.type="jks"
                       org.apache.ws.security.crypto.merlin.keystore.password="LibertyX509Client"
                       org.apache.ws.security.crypto.merlin.keystore.alias="x509ClientCert"
                       org.apache.ws.security.crypto.merlin.file="${server.config.dir}/x509ClientDefault.jks"/>
</wsSecurityClient>
Das folgende Beispiel zeigt eine Standardproviderkonfiguration:
<wsSecurityProvider id="default"
                    ws-security.username="user2">
  <encryptionProperties org.apache.ws.security.crypto.merlin.keystore.type="jks"
                        org.apache.ws.security.crypto.merlin.keystore.password="LibertyX509Server"
                        org.apache.ws.security.crypto.merlin.keystore.alias="x509ServerCert"
                        org.apache.ws.security.crypto.merlin.file="${server.config.dir}/x509ServerDefault.jks"/>
</wsSecurityProvider>
Die folgende Tabelle enthält die WS-Security-Standardbenutzereigenschaften in Liberty. Dieselben Eigenschaften sind auch in CXF zu finden.
Tabelle 1. WS-Security-Standardbenutzereigenschaften in Liberty und in CXF
Liberty/CXF-Eigenschaft Standardwert
ws-security.username ohne
ws-security.password ohne
ws-security.signature.username ohne
ws-security.encryption.username ohne
Die folgende Tabelle enthält die Eigenschaften für die WS-Security-Callback-Handler-Klasse und die Verschlüsselung in Liberty und die entsprechenden CXF-Eigenschaften, falls diese abweichen.
Tabelle 2. Eigenschaften für WS-Security-Callback-Klasse und Verschlüsselung in Liberty und die entsprechenden CXF-Eigenschaften
Liberty-Eigenschaft CXF-Eigenschaft Standardwert
ws-security.callback-handler   ohne
<signatureProperties> ws-security.signature.properties ohne
<encryptionProperties> ws-security.encryption.properties ohne
In WebSphere Application Server werden die wss4j-Eigenschaften als Attribute der Elemente signatureProperties und encryptionProperties angegeben. Das folgende Beispiel zeigt die wss4j-Eigenschaften:
<signatureProperties org.apache.ws.security.crypto.merlin.keystore.type="jks"
                     org.apache.ws.security.crypto.merlin.keystore.password="LibertyX509Client"
                     org.apache.ws.security.crypto.merlin.keystore.alias="x509ClientDefault"
                     org.apache.ws.security.crypto.merlin.file="${server.config.dir}/x509ClientDefault.jks">
</signatureProperties>
Die folgende Tabelle enthält die wss4j-Verschlüsselungseigenschaften in Liberty. Dieselben Eigenschaften sind auch in CXF zu finden.
Tabelle 3. wss4j-Verschlüsselungseigenschaften in Liberty und CXF
Liberty/CXF-Eigenschaft Standardwert
org.apache.ws.security.crypto.provider

org.apache.ws.security.components.
crypto.Merlin

org.apache.ws.security.crypto.
merlin.keystore.provider

Standardmäßig wird der installierte Provider verwendet.

org.apache.ws.security.crypto.
merlin.cert.provider

Standardmäßig wird der Keystore-Provider verwendet.

org.apache.ws.security.crypto.
merlin.x509crl.file

ohne
Die folgende Tabelle enthält die in Liberty enthaltenen wss4j-Keystore-Eigenschaften. Dieselben Eigenschaften sind auch in CXF zu finden.
Tabelle 4. wss4j-Keystore-Eigenschaften in Liberty und in CXF
Liberty/CXF-Eigenschaft Standardwert

org.apache.ws.security.crypto.
merlin.keystore.file

ohne

org.apache.ws.security.crypto.
merlin.keystore.password

ohne

org.apache.ws.security.crypto.
merlin.keystore.type

ohne

org.apache.ws.security.crypto.
merlin.keystore.alias

ohne

org.apache.ws.security.crypto.
merlin.keystore.private.password

ohne
Die folgende Tabelle enthält die in Liberty enthaltenen wss4j-Truststore-Eigenschaften. Dieselben Eigenschaften sind auch in CXF zu finden.
Tabelle 5. wss4j-Truststore-Eigenschaften in Liberty und in CXF
Liberty-Eigenschaft Standardwert

org.apache.ws.security.crypto.
merlin.truststore.file

ohne

org.apache.ws.security.crypto.
merlin.truststore.password

ohne

org.apache.ws.security.crypto.
merlin.truststore.type

ohne
Die folgende Tabelle enthält verschiedene WS-Security-Eigenschaften in Liberty. Dieselben Eigenschaften sind auch in CXF zu finden.
Tabelle 6. Verschiedene WS-Security-Eigenschaften in Liberty und in CXF
Liberty/CXF-Eigenschaft Standardwert
ws-security.enable.nonce.cache true
ws-security.cache.config.file ohne
Die folgende Tabelle enthält die Eigenschaften, die nur in Liberty unterstützt werden.
Tabelle 7. Eigenschaften, die nur in Liberty unterstützt werden
Liberty-Eigenschaft CXF-Eigenschaft Standardwert
callerToken ohne ohne

Zusätzliche Eigenschaften konfigurieren

Sie können mehrere zusätzliche Eigenschaften festlegen, um für die WS-Security-Laufzeitumgebung zusätzliche Konfigurationsinformationen bereitzustellen. Ausführliche Informationen zu diesen Eigenschaften finden Sie unter den folgenden Links:

Alle zusätzlichen Eigenschaften können in der Datei server.xml in der WS-Security-Standardkonfiguration angegeben werden.

Beispielsweise können Sie zusätzliche Eigenschaften festlegen, indem Sie sie im Abschnitt wsSecurityClient und/oder im Abschnitt wsSecurityProvider angeben.
<wsSecurityProvider id="default"
  <signatureProperties ... />
  <encryptionProperties ... />
  ws-security.cache.config.file = "${server.config.dir}/resources/ws-security/new_cxf-ehcache.xml"
</wsSecurityProvider>

<wsSecurityClient id="default"
  <signatureProperties ... />
  <encryptionProperties ... />
  ws-security.username-token.always.encrypted="false"
</wsSecurityClient>

Cache konfigurieren

WS-Security stellt eine Standard-Caching-Implementierung für nonce in einem Benutzernamenstoken, der Zeitmarke created und Sicherheitstoken bereit. Die Standard-Cache-Implementierung basiert auf ehCache mit folgenden Standardeinstellungen:
maxEntriesLocalHeap="5000"
timeToIdleSeconds="3600"
timeToLiveSeconds="3600"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"

Zum Ändern der Standardcacheeinstellungen können Sie eine XML-Konfigurationsdatei ehCache bereitstellen. Geben Sie mit der angepassten Eigenschaft ws-security.cache.config.file den Namen einer Datei mit angepassten Eigenschaften an, die von den Standardeinstellungen abweichen. Diese Datei muss im Serverprofil gespeichert werden. Eine weitere Beispielkonfigurationsdatei für die Cacheeinstellung finden Sie unter http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/resources/cxf-ehcache.xml?view=markup.

Konfiguration eines stärkeren Signaturalgorithmus

Aufgrund der Schwäche des SHA1-Signaturalgorithmus empfiehlt das US-Institut NIST (National Institute of Standards and Technology), stärkere Signaturalgorithmen zu verwenden.

Allerdings definiert die WS-Security-Richtlinie 1.3 als einzige Signaturalgorithmen HmacSha1 oder RsaSha1 (die gemeinsam als sha1 bezeichnet werden). WS-Security in Liberty hat eine Konfigurationsoption für die Verwendung eines der folgenden stärkeren Signaturalgorithmen:
  • RSA-SHA-256
  • RSA-SHA-384
  • RSA-SHA-512
  • HMAC-SHA-256
  • HMAC-SHA-384
  • HMAC-SHA-512

Zum Konfigurieren von WS-Security in Liberty für die Unterstützung eines stärkeren Signaturalgorithmus müssen Sie mit dem Attribut signatureAlgorithm den erforderlichen Algorithmus im Element <signatureProperties> der Datei server.xml definieren. Die gültigen Werte für das Attribut signatureAlgorithm sind sha256, sha384 und sha512. Wenn Sie z. B. sha512 als Wert für das Attribut signatureAlgorithm angeben, wird in der Signatur mit einem asymmetrischen Schlüssel der Signaturalgorithmus RSA-SHA-512 und in der Signatur mit einem symmetrischen Schlüssel der Signaturalgorithmus HMAC-SHA-512 verwendet.

Das folgende Beispiel zeigt ein Beispiel für eine Konfiguration auf Clientseite, für die der Signaturalgorithmus sha256 erforderlich ist:
<wsSecurityClient id="default"
  ws-security.password="security"
  ws-security.username="user1"
  ws-security.callback-handler="com.ibm.ws.wssecurity.example.cbh.CommonPasswordCallback"
  ws-security.signature.username="soaprequester">
  <signatureProperties 
    signatureAlgorithm="sha256"
    org.apache.ws.security.crypto.merlin.keystore.type="jks"
    org.apache.ws.security.crypto.merlin.keystore.password="client"
    org.apache.ws.security.crypto.merlin.keystore.alias="soaprequester"
    org.apache.ws.security.crypto.merlin.file="${server.config.dir}/dsig-sender.ks" />
</wsSecurityClient>
Das folgende Beispiel zeigt eine Beispielkonfiguration auf Providerseite, für die der Signaturalgorithmus sha256 erforderlich ist.
<wsSecurityProvider id="default"
  ws-security.callback-handler="com.ibm.ws.wssecurity.example.cbh.CommonPasswordCallback"
  ws-security.signature.username="soapprovider">
  <signatureProperties 
    signatureAlgorithm="sha256"
    org.apache.ws.security.crypto.merlin.keystore.type="jks"
    org.apache.ws.security.crypto.merlin.keystore.password="server"
    org.apache.ws.security.crypto.merlin.keystore.alias="soapprovider"
    org.apache.ws.security.crypto.merlin.file="${server.config.dir}/dsig-receiver.ks" /> 
</wsSecurityProvider>

Symbol das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 01.12.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwlp_wssec_defaultconfig
Dateiname: cwlp_wssec_defaultconfig.html