Configuración predeterminada de seguridad de servicios Web
Una configuración de seguridad de servicios Web (WS-Security) es complementaria a la política WS-Security en tiempo de ejecución. La configuración de WS-Security sigue el estilo de par de nombre y valor de CXF y conserva el nombre de propiedad de CXF. Algunas de las propiedades tienen valores predeterminados y otras no.
En el archivo server.xml, WebSphere Application Server Liberty proporciona una configuración de nivel de servidor que se aplica a todos los servicios. Esta configuración se conoce como la configuración predeterminada de WS-Security.
El archivo server.xml tiene dos configuraciones de WS-Security predeterminadas: una para aplicaciones cliente y otra para aplicaciones de proveedor. No puede existir ninguna otra configuración de WS-Security en el archivo server.xml. Si necesita una configuración de WS-Security personalizada para su aplicación que se aparta del valor predeterminado, la configuración se debe realizar mediante programación.
<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>
Propiedad Liberty/CXF | Valor predeterminado |
---|---|
ws-security.username | ninguna |
ws-security.password | ninguna |
ws-security.signature.username | ninguna |
ws-security.encryption.username | ninguna |
Propiedad Liberty | Propiedad CXF | Valor predeterminado |
---|---|---|
ws-security.callback-handler | ninguna | |
<signatureProperties> | ws-security.signature.properties | ninguna |
<encryptionProperties> | ws-security.encryption.properties | ninguna |
<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>
Propiedad Liberty/CXF | Valor predeterminado |
---|---|
org.apache.ws.security.crypto.provider | org.apache.ws.security.components. |
org.apache.ws.security.crypto. |
el valor predeterminado es el proveedor instalado |
org.apache.ws.security.crypto. |
el valor predeterminado es el proveedor de almacén de claves |
org.apache.ws.security.crypto. |
ninguna |
Propiedad Liberty/CXF | Valor predeterminado |
---|---|
org.apache.ws.security.crypto. |
ninguna |
org.apache.ws.security.crypto. |
ninguna |
org.apache.ws.security.crypto. |
ninguna |
org.apache.ws.security.crypto. |
ninguna |
org.apache.ws.security.crypto. |
ninguna |
Propiedad Liberty | Valor predeterminado |
---|---|
org.apache.ws.security.crypto. |
ninguna |
org.apache.ws.security.crypto. |
ninguna |
org.apache.ws.security.crypto. |
ninguna |
Propiedad Liberty/CXF | Valor predeterminado |
---|---|
ws-security.enable.nonce.cache | true |
ws-security.cache.config.file | ninguna |
Propiedad Liberty | Propiedad CXF | Valor predeterminado |
---|---|---|
callerToken | ninguna | ninguna |
Configuración de propiedades adicionales
Cualquiera de las propiedades adicionales se puede especificar en la configuración predeterminada de WS-Security del archivo server.xml.
<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>
Configuración de la memoria caché
maxEntriesLocalHeap="5000"
timeToIdleSeconds="3600"
timeToLiveSeconds="3600"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
Para modificar los valores de memoria caché, puede proporcionar un archivo XML de configuración ehCache. Utilice la propiedad personalizada ws-security.cache.config.file para especificar un nombre de archivo con propiedades personalizadas para desviarlas de los valores predeterminados. Debe poner este archivo en alguna parte del perfil de servidor. Puede encontrar un archivo de configuración de valores de memoria caché de muestra en http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/resources/cxf-ehcache.xml?view=markup.
Configuración de un algoritmo de firma más sólido
Debido a las debilidades del algoritmo de firma SHA1, el Instituto Nacional de Estándares y Tecnología (NIST) recomienda que utilice algoritmos de firma más sólidos.
- RSA-SHA-256
- RSA-SHA-384
- RSA-SHA-512
- HMAC-SHA-256
- HMAC-SHA-384
- HMAC-SHA-512
Para configurar WS-Security en Liberty para soportar el algoritmo de firma más sólido, utilice el atributo signatureAlgorithm para definir el algoritmo necesario dentro del elemento <signatureProperties> en el archivo server.xml. Los valores válidos para el atributo signatureAlgorithm son sha256, sha384 y sha512. Por ejemplo, si especifica sha512 como valor del atributo signatureAlgorithm, el algoritmo de firma que se utiliza en la firma con una clave asimétrica es RSA-SHA-512, y el algoritmo de firma que se utiliza en la firma con una clave simétrica es HMAC-SHA-512.
<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>