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.
<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>
<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>
Liberty/CXF-Eigenschaft | Standardwert |
---|---|
ws-security.username | ohne |
ws-security.password | ohne |
ws-security.signature.username | ohne |
ws-security.encryption.username | ohne |
Liberty-Eigenschaft | CXF-Eigenschaft | Standardwert |
---|---|---|
ws-security.callback-handler | ohne | |
<signatureProperties> | ws-security.signature.properties | ohne |
<encryptionProperties> | ws-security.encryption.properties | ohne |
<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>
Liberty/CXF-Eigenschaft | Standardwert |
---|---|
org.apache.ws.security.crypto.provider | org.apache.ws.security.components. |
org.apache.ws.security.crypto. |
Standardmäßig wird der installierte Provider verwendet. |
org.apache.ws.security.crypto. |
Standardmäßig wird der Keystore-Provider verwendet. |
org.apache.ws.security.crypto. |
ohne |
Liberty/CXF-Eigenschaft | Standardwert |
---|---|
org.apache.ws.security.crypto. |
ohne |
org.apache.ws.security.crypto. |
ohne |
org.apache.ws.security.crypto. |
ohne |
org.apache.ws.security.crypto. |
ohne |
org.apache.ws.security.crypto. |
ohne |
Liberty-Eigenschaft | Standardwert |
---|---|
org.apache.ws.security.crypto. |
ohne |
org.apache.ws.security.crypto. |
ohne |
org.apache.ws.security.crypto. |
ohne |
Liberty/CXF-Eigenschaft | Standardwert |
---|---|
ws-security.enable.nonce.cache | true |
ws-security.cache.config.file | ohne |
Liberty-Eigenschaft | CXF-Eigenschaft | Standardwert |
---|---|---|
callerToken | ohne | ohne |
Zusätzliche Eigenschaften konfigurieren
Alle zusätzlichen Eigenschaften können in der Datei server.xml in der WS-Security-Standardkonfiguration angegeben werden.
<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
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.
- 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.
<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>
<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>