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.

En el ejemplo siguiente se muestra una configuración de cliente predeterminada:
<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>
En el ejemplo siguiente se muestra una configuración de proveedor predeterminada:
<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>
La tabla siguiente muestra las propiedades de usuario de WS-Security predeterminadas en Liberty. Estas mismas propiedades se pueden encontrar en CXF.
Tabla 1. Propiedades de usuario de WS-Security predeterminadas en Liberty y CXF
Propiedad Liberty/CXF Valor predeterminado
ws-security.username ninguna
ws-security.password ninguna
ws-security.signature.username ninguna
ws-security.encryption.username ninguna
La tabla siguiente muestra la clase de manejador de devolución de llamada WS-Security y las propiedades criptográficas en Liberty y las propiedades CXF equilvantes, si son diferentes.
Tabla 2. La clase de manejador de devolución de llamada WS-Security y las propiedades criptográficas en Liberty y las propiedades CXF equivalentes
Propiedad Liberty Propiedad CXF Valor predeterminado
ws-security.callback-handler   ninguna
<signatureProperties> ws-security.signature.properties ninguna
<encryptionProperties> ws-security.encryption.properties ninguna
En WebSphere Application Server, las propiedades wss4j se especifican como atributos de los elementos signatureProperties o encryptionProperties. El ejemplo siguiente muestra las propiedades wss4j:
<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>
La tabla siguiente muestra las propiedades criptográficas wss4j en Liberty. Estas mismas propiedades se pueden encontrar en CXF.
Tabla 3. Propiedades criptográficas wss4j en Liberty y CXF
Propiedad Liberty/CXF Valor predeterminado
org.apache.ws.security.crypto.provider

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

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

el valor predeterminado es el proveedor instalado

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

el valor predeterminado es el proveedor de almacén de claves

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

ninguna
La tabla siguiente muestra las propiedades de almacén de claves wss4j en Liberty. Estas mismas propiedades se pueden encontrar en CXF.
Tabla 4. Propiedades de almacén de claves wss4j en Liberty y CXF
Propiedad Liberty/CXF Valor predeterminado

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

ninguna

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

ninguna

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

ninguna

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

ninguna

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

ninguna
La tabla siguiente muestra las propiedades de almacén de confianza wss4j en Liberty. Estas mismas propiedades se pueden encontrar en CXF.
Tabla 5. Propiedades de almacén de confianza wss4j en Liberty y CXF
Propiedad Liberty Valor predeterminado

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

ninguna

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

ninguna

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

ninguna
La tabla siguiente muestra las propiedades varias de WS-Security en Liberty. Estas mismas propiedades se pueden encontrar en CXF.
Tabla 6. Propiedades varias de WS-Security en Liberty y CXF
Propiedad Liberty/CXF Valor predeterminado
ws-security.enable.nonce.cache true
ws-security.cache.config.file ninguna
La tabla siguiente muestra las propiedades que están soportadas solo en Liberty.
Tabla 7. Propiedades que solo están soportadas en Liberty
Propiedad Liberty Propiedad CXF Valor predeterminado
callerToken ninguna ninguna

Configuración de propiedades adicionales

Puede establecer varias propiedades adicionales para proporcionar información de configuración adicional al entorno de ejecución de WS-Security. Consulte los enlaces siguientes para obtener información detallada sobre estas propiedades:

Cualquiera de las propiedades adicionales se puede especificar en la configuración predeterminada de WS-Security del archivo server.xml.

Por ejemplo, para especificar las propiedades adicionales, hágalo en las secciones wsSecurityClient o wsSecurityProvider, o en las dos.
<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é

WS-Security proporciona una implementación de almacenamiento en memoria caché predeterminada para nonce en una UsernameToken, created TimeStamp (indicación de fecha y hora de creación) y las señales de seguridad. La implementación de memoria caché predeterminada se basa en ehCache con los valores predeterminados siguientes:
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.

Sin embargo, la política de WS-Security 1.3 define HmacSha1 o RsaSha1 (denominado de forma colectiva sha1) como el único algoritmo de firma. WS-Security en Liberty tiene una opción de configuración para utilizar el algoritmo de firma más sólido siguiente:
  • 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.

El ejemplo siguiente muestra una configuración del lado de cliente que requiere el algoritmo de firma sha256:
<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>
El ejemplo siguiente muestra una configuración del lado de proveedor que requiere el algoritmo de firma sha256:
<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>

Icono que indica el tipo de tema Tema de concepto

Nombre de archivo: cwlp_wssec_defaultconfig.html