Configuration par défaut de la sécurité de services Web
Une configuration de sécurité de services Web (WS-Security) est complémentaire de la règle de sécurité de services Web à l'exécution. La configuration de la sécurité de services Web respecte le style de la paire nom-valeur CXF et conserve le nom de propriété CXF. Certaines des propriétés sont associées à des valeurs par défaut, d'autres non.
Dans le fichier server.xml, WebSphere Application Server Liberty fournit une configuration de niveau de serveur qui est appliquée à tous les services. Il s'agit de la configuration de sécurité de services Web par défaut.
Le fichier server.xml comporte deux configurations de sécurité de services Web par défaut : une pour les applications client et une pour les applications de fournisseur. Aucune autre configuration de sécurité de services Web ne peut exister dans le fichier server.xml. Si vous avez besoin d'une configuration de sécurité de services Web personnalisée pour votre application, qui diffère de la configuration par défaut, vous devez la définir à l'aide d'un programme.
<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>
Propriété Liberty/CXF | Valeur par défaut |
---|---|
ws-security.username | Aucune |
ws-security.password | Aucune |
ws-security.signature.username | Aucune |
ws-security.encryption.username | Aucune |
Propriété Liberty | Propriété CXF | Valeur par défaut |
---|---|---|
ws-security.callback-handler | Aucune | |
<signatureProperties> | ws-security.signature.properties | Aucune |
<encryptionProperties> | ws-security.encryption.properties | Aucune |
<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>
Propriété Liberty/CXF | Valeur par défaut |
---|---|
org.apache.ws.security.crypto.provider | org.apache.ws.security.components. |
org.apache.ws.security.crypto. |
Par défaut, fournisseur installé |
org.apache.ws.security.crypto. |
Par défaut, fournisseur de fichier de clés |
org.apache.ws.security.crypto. |
Aucune |
Propriété Liberty/CXF | Valeur par défaut |
---|---|
org.apache.ws.security.crypto. |
Aucune |
org.apache.ws.security.crypto. |
Aucune |
org.apache.ws.security.crypto. |
Aucune |
org.apache.ws.security.crypto. |
Aucune |
org.apache.ws.security.crypto. |
Aucune |
Propriété Liberty | Valeur par défaut |
---|---|
org.apache.ws.security.crypto. |
Aucune |
org.apache.ws.security.crypto. |
Aucune |
org.apache.ws.security.crypto. |
Aucune |
Propriété Liberty/CXF | Valeur par défaut |
---|---|
ws-security.enable.nonce.cache | true |
ws-security.cache.config.file | Aucune |
Propriété Liberty | Propriété CXF | Valeur par défaut |
---|---|---|
callerToken | Aucune | Aucune |
Configuration de propriétés supplémentaires
Vous pouvez spécifier les propriétés supplémentaires pour la configuration de sécurité de services Web par défaut dans le fichier 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>
Configuration du cache
maxEntriesLocalHeap="5000"
timeToIdleSeconds="3600"
timeToLiveSeconds="3600"
overflowToDisk="true"
maxElementsOnDisk="10000000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
Pour modifier les paramètres de cache par défaut, vous pouvez fournir un fichier XML de configuration ehCache. Utilisez la propriété personnalisée ws-security.cache.config.file afin de spécifier un nom de fichier avec des propriétés personnalisées pour dévier des paramètres par défaut. Vous devez placer ce fichier quelque part dans le profil du serveur. Vous trouverez un autre exemple de fichier de configuration des paramètres du cache à l'adresse http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/resources/cxf-ehcache.xml?view=markup.
Configuration d'un algorithme de signature plus fort
En raison de la faiblesse de l'algorithme de signature SHA1, le National Institute of Standards and Technology (NIST) recommande l'utilisation d'algorithmes de signature plus forts.
- RSA-SHA-256
- RSA-SHA-384
- RSA-SHA-512
- HMAC-SHA-256
- HMAC-SHA-384
- HMAC-SHA-512
Pour configurer la sécurité de services Web dans Liberty afin de prendre en charge l'algorithme de signature plus fort, utilisez l'attribut signatureAlgorithm afin de définir l'algorithme requis dans l'élément <signatureProperties> du fichier server.xml. Les valeurs admises pour l'attribut signatureAlgorithm sont sha256, sha384 et sha512. Par exemple, si vous spécifiez sha512 comme valeur pour l'attribut signatureAlgorithm, l'algorithme de signature qui est utilisé dans la signature avec une clé asymétrique est RSA-SHA-512, et l'algorithme de signature qui est utilisé dans la signature avec une clé symétrique est 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>