Author: buildbot
Date: Tue Apr 5 16:47:29 2016
New Revision: 984830
Log:
Production update by buildbot for cxf
Modified:
websites/production/cxf/content/cache/docs.pageCache
websites/production/cxf/content/docs/ws-securitypolicy.html
Modified: websites/production/cxf/content/cache/docs.pageCache
==============================================================================
Binary files - no diff available.
Modified: websites/production/cxf/content/docs/ws-securitypolicy.html
==============================================================================
--- websites/production/cxf/content/docs/ws-securitypolicy.html (original)
+++ websites/production/cxf/content/docs/ws-securitypolicy.html Tue Apr 5
16:47:29 2016
@@ -117,7 +117,7 @@ Apache CXF -- WS-SecurityPolicy
<td height="100%">
<!-- Content -->
<div class="wiki-content">
-<div id="ConfluenceContent"><h1
id="WS-SecurityPolicy-WS-SecurityPolicy">WS-SecurityPolicy</h1><p>CXF 2.2
introduced support for using <a shape="rect" class="external-link"
href="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/v1.3/ws-securitypolicy.html"
rel="nofollow">WS-SecurityPolicy</a> to configure WSS4J instead of the custom
configuration documented on the <a shape="rect"
href="ws-security.html">WS-Security</a> page. However, all of the "background"
material on the <a shape="rect" href="ws-security.html">WS-Security</a> page
still applies and is important to know. WS-SecurityPolicy just provides an
easier and more standards based way to configure and control the security
requirements. With the security requirements documented in the WSDL as <a
shape="rect" href="ws-policy.html">WS-Policy</a> fragments, other tools such as
.NET can easily know how to configure themselves to inter-operate with CXF
services.</p><p>CXF supports WS-SecurityPolicy versions 1.1 and later. It does
not support WS-SecurityPolicy 1.0.</p><h3
id="WS-SecurityPolicy-Backwardscompatibilityconfigurationnote">Backwards
compatibility configuration note</h3><p>From Apache CXF 3.1.0, some of the
WS-Security based configuration tags have been changed to just start with
"security-". This is so that they can be shared with the <a shape="rect"
href="jax-rs-xml-security.html">JAX-RS XML Security</a> component. Apart from
the prefix change, the tags are exactly the same. Older "ws-security-" values
continue to be accepted in CXF 3.1.0. See the <a shape="rect"
href="security-configuration.html">Security Configuration</a> page for
information on the new shared configuration tags.</p><h3
id="WS-SecurityPolicy-EnablingWS-SecurityPolicy">Enabling
WS-SecurityPolicy</h3><p>In CXF 2.2, if the cxf-rt-ws-policy and
cxf-rt-ws-security modules are available on the classpath, the
WS-SecurityPolicy stuff is automatically enabled. Since the entire security
runtime is policy driven, the only requirement is t
hat the policy engine and security policies be available.</p><p>If you are
using the full "bundle" jar, all the security and policy stuff is already
included.</p><h3 id="WS-SecurityPolicy-Policydescription">Policy
description</h3><p>With WS-SecurityPolicy, the binding and/or operation in the
wsdl references a <a shape="rect" href="ws-policy.html">WS-Policy</a> fragment
that describes the basic security requirements for interacting with that
service. The <a shape="rect" class="external-link"
href="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/v1.3/ws-securitypolicy.html"
rel="nofollow">WS-SecurityPolicy specification</a> allows for specifying
things like asymmetric/symmetric keys, using transports (https) for encryption,
which parts/headers to encrypt or sign, whether to sign then encrypt or encrypt
then sign, whether to include timestamps, whether to use derived keys, etc...
Basically, it describes what actions are necessary to securely interact with
the service described in th
e WSDL.</p><p>However, the WS-SecurityPolicy fragment does not include
"everything" that is required for a runtime to be able to able to create the
messages. It does not describe things such as locations of key stores, user
names and passwords, etc... Those need to be configured in at runtime to
augment the WS-SecurityPolicy fragment.</p><h3
id="WS-SecurityPolicy-Configuringtheextraproperties">Configuring the extra
properties</h3><p>There are several extra properties that may need to be set to
provide the additional bits of information to the runtime. Note that you should
check that a particular property is supported in the version of CXF you are
using. First, see the <a shape="rect"
href="security-configuration.html">Security Configuration</a> page for
information on the configuration tags that are shared with the JAX-RS XML
Security component. Here are configuration tags that only apply to the
WS-SecurityPolicy layer, and hence all start with "ws-security" (as opposed to
the commo
n tags which now start with "security-").</p><p> </p><h4
id="WS-SecurityPolicy-BooleanWS-Securityconfigurationtags,e.g.thevalueshouldbe"true"or"false".">Boolean
WS-Security configuration tags, e.g. the value should be "true" or
"false".</h4><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>constant</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>default</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>definition</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.validate.token</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Whether to validate the password of a received
UsernameToken or not.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.username-token.always.encrypted</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>tr
ue</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Whether to
always encrypt UsernameTokens that are defined as a SupportingToken. This
should not be set to false in a production environment, as it exposes the
password (or the digest of the password) on the wire.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.is-bsp-compliant</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Whether to ensure compliance with the Basic Security
Profile (BSP) 1.1 or not.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.self-sign-saml-assertion</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Whether to self-sign a SAML Assertion or
not. If this is set to true, then an enveloped signature will be generated when
the SAML Assertion is constructed. Only applies up to CXF 2.7.x.</
p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.enable.nonce.cache</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>(varies)</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Whether to cache UsernameToken nonces. See
<a shape="rect"
href="http://cxf.apache.org/javadoc/latest/org/apache/cxf/ws/security/SecurityConstants.html#ENABLE_NONCE_CACHE">here</a>
for more information.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.enable.timestamp.cache</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>(varies)</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Whether to cache Timestamp
Created Strings. See <a shape="rect"
href="http://cxf.apache.org/javadoc/latest/org/apache/cxf/ws/security/SecurityConstants.html#ENABLE_TIMESTAMP_CACHE">here</a>
for more information.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.enable.saml.cache</td><td colspan="1" rowsp
an="1" class="confluenceTd">(varies)</td><td colspan="1" rowspan="1"
class="confluenceTd">Whether to cache SAML2 Token Identifiers, if the token
contains a "OneTimeUse" Condition.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.enable.streaming</td><td colspan="1"
rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1"
class="confluenceTd">Whether to enable streaming WS-Security.</td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd">ws-security.return.security.error</td><td colspan="1"
rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Whether to return the security error message to the
client, and not one of the default error QNames.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd">ws-security.must-understand</td><td colspan="1"
rowspan="1" class="confluenceTd">true</td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Set this to "false" in order to remove the SOAP mustU
nderstand header from security headers generated based on a
WS-SecurityPolicy.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.store.bytes.in.attachment</td><td colspan="1"
rowspan="1" class="confluenceTd">(varies)</td><td colspan="1" rowspan="1"
class="confluenceTd"><strong>CXF 3.1.3/3.0.6</strong> Whether to store bytes
(CipherData or BinarySecurityToken) in an attachment if MTOM is enabled. True
by default in CXF 3.1.x, false for CXF 3.0.x.</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">ws-security.use.str.transform</td><td
colspan="1" rowspan="1" class="confluenceTd">true</td><td colspan="1"
rowspan="1" class="confluenceTd"><p><strong>CXF 3.1.5/3.0.8 </strong>Whether to
use the STR (Security Token Reference) Transform when (externally) signing a
SAML Token. The default is true.</p></td></tr></tbody></table></div><h4
id="WS-SecurityPolicy-Non-booleanWS-SecurityConfigurationparameters">Non-boolean
WS-Security Configuration parameters</h
4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.timestamp.timeToLive</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The time in seconds to append
to the Creation value of an incoming Timestamp to determine whether to accept
the Timestamp as valid or not. The default value is 300 seconds (5
minutes).</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.timestamp.futureTimeToLive</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The time in seconds in the
future within which the Created time of an incoming Timestamp is valid. The
default value is "60". See <a shape="rect"
href="http://cxf.apache.org/javadoc/latest/org/apache/cxf/ws/security/SecurityConstants.html#TIMESTAMP_FUTURE_TTL">here</a>
for more information.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.spnego.client.action</p></td><td
colspan="1" rowspan="1" c
lass="confluenceTd"><p>The <a shape="rect" class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/spnego/SpnegoClientAction.html">SpnegoClientAction</a>
implementation to use for SPNEGO. This allows the user to plug in a different
implementation to obtain a service ticket.</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ws-security.nonce.cache.instance</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>This holds a reference to a <a
shape="rect" class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/cache/ReplayCache.html">ReplayCache</a>
instance used to cache UsernameToken nonces. The default instance that is used
is the <a shape="rect" class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/cache/EHCacheReplayCache.java?view=markup">EHCacheReplayCache</a>.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p
>ws-security.timestamp.cache.instance</p></td><td colspan="1" rowspan="1"
>class="confluenceTd"><p>This holds a reference to a <a shape="rect"
>class="external-link"
>href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/cache/ReplayCache.html">ReplayCache</a>
> instance used to cache Timestamp Created Strings. The default instance that
>is used is the <a shape="rect" class="external-link"
>href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/cache/EHCacheReplayCache.java?view=markup">EHCacheReplayCache</a>.</p></td></tr><tr><td
> colspan="1" rowspan="1"
>class="confluenceTd">ws-security.saml.cache.instance</td><td colspan="1"
>rowspan="1" class="confluenceTd">This holds a reference to a <a shape="rect"
>class="external-link"
>href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/cache/ReplayCache.html">ReplayCache</a>
> instance used to cache SAML2 Token Identifiers, when the token has a
>"OneTimeUse" Condition. The default instan
ce that is used is the <a shape="rect" class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/cache/EHCacheReplayCache.java?view=markup">EHCacheReplayCache</a>.</td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.cache.config.file</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Set this property to point to a
configuration file for the underlying caching implementation. The default
configuration file that is used is <a shape="rect" class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/resources/cxf-ehcache.xml?view=markup">cxf-ehcache.xml</a>
in the cxf-rt-ws-security module.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>org.apache.cxf.ws.security.tokenstore.TokenStore</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The <a shape="rect"
class="external-link" href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/s
ecurity/src/main/java/org/apache/cxf/ws/security/tokenstore/TokenStore.java?view=markup">TokenStore</a>
instance to use to cache security tokens. By default this uses the <a
shape="rect" class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/tokenstore/EHCacheTokenStore.java?view=markup">EHCacheTokenStore</a>
if EhCache is available. Otherwise it uses the <a shape="rect"
class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/tokenstore/MemoryTokenStore.java?view=markup">MemoryTokenStore</a>.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd">ws-security.cache.identifier</td><td colspan="1"
rowspan="1" class="confluenceTd">The Cache Identifier to use with the
TokenStore. CXF uses the following key to retrieve a token store:
"org.apache.cxf.ws.security.tokenstore.TokenStore-<identifier>". This key
can be used to configure service-
specific cache configuration. If the identifier does not match, then it falls
back to a cache configuration with key
"org.apache.cxf.ws.security.tokenstore.TokenStore". The default
"<identifier>" is the QName of the service in question.</td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.role.classifier</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>If one of the WSS4J Validators returns a
JAAS Subject from Validation, then the WSS4JInInterceptor will attempt to
create a SecurityContext based on this Subject. If this value is not specified,
then it tries to get roles using the DefaultSecurityContext in cxf-rt-core.
Otherwise it uses this value in combination with the
SUBJECT_ROLE_CLASSIFIER_TYPE to get the roles from the
Subject.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.role.classifier.type</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>If one of the WSS4J Validators
returns a JAAS Subje
ct from Validation, then the WSS4JInInterceptor will attempt to create a
SecurityContext based on this Subject. Currently accepted values are "prefix"
or "classname". Must be used in conjunction with the SUBJECT_ROLE_CLASSIFIER.
The default value is "prefix".</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.asymmetric.signature.algorithm</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>This configuration tag
overrides the default Asymmetric Signature algorithm (RSA-SHA1) for use in
WS-SecurityPolicy, as the WS-SecurityPolicy specification does not allow the
use of other algorithms at present.</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd">ws-security.symmetric.signature.algorithm</td><td
colspan="1" rowspan="1" class="confluenceTd">This configuration tag overrides
the default Symmetric Signature algorithm (HMAC-SHA1) for use in
WS-SecurityPolicy, as the WS-SecurityPolicy specification does not allow the
use of other algor
ithms at present.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.password.encryptor.instance</td><td
colspan="1" rowspan="1" class="confluenceTd"><p>A PasswordEncryptor instance,
which is used to encrypt or decrypt passwords in the Merlin Crypto
implementation</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.delegated.credential</td><td colspan="1"
rowspan="1" class="confluenceTd">A delegated credential to use for WS-Security.
Currently only a Kerberos GSSCredential Object is supported. This is used to
retrieve a service ticket instead of using the client
credentials.</td></tr></tbody></table></div><h4
id="WS-SecurityPolicy-Validatorimplementationsforvalidatingreceivedsecuritytokens">Validator
implementations for validating received security tokens</h4><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>ws-security.ut.validator</p></td><td
colspan="1" rowspan="1"
class="confluenceTd"><p>The WSS4J Validator instance to use to validate
UsernameTokens. The default value is the <a shape="rect" class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/validate/UsernameTokenValidator.html">UsernameTokenValidator</a>.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.saml1.validator</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The WSS4J Validator instance to use to
validate SAML 1.1 Tokens. The default value is the <a shape="rect"
class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/validate/SamlAssertionValidator.html">SamlAssertionValidator</a>.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.saml2.validator</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The WSS4J Validator instance to use to
validate SAML 2.0 Tokens. The default value is the <a shape="rect"
class="external-link" href="http://ws
.apache.org/wss4j/apidocs/org/apache/ws/security/validate/SamlAssertionValidator.html">SamlAssertionValidator</a>.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.timestamp.validator</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The WSS4J Validator instance to use to
validate Timestamps. The default value is the <a shape="rect"
class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/validate/TimestampValidator.html">TimestampValidator</a>.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.signature.validator</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The WSS4J Validator instance to use to
validate trust in credentials used in Signature verification. The default value
is the <a shape="rect" class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/validate/SignatureTrustValidator.html">SignatureTrustValidator</a>.</p></td></tr><tr><t
d colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.bst.validator</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The WSS4J Validator instance to use to
validate BinarySecurityTokens. The default value is the <a shape="rect"
class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/validate/NoOpValidator.html">NoOpValidator</a>.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.sct.validator</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The WSS4J Validator instance to use to
validate SecurityContextTokens. The default value is the <a shape="rect"
class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/validate/NoOpValidator.html">NoOpValidator</a>.</p></td></tr></tbody></table></div><h4
id="WS-SecurityPolicy-KerberosConfigurationtags">Kerberos Configuration
tags</h4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td
colspan="1" rowspan="1" c
lass="confluenceTd"><p>constant</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>default</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>definition</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.kerberos.request.credential.delegation</td><td
colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1"
rowspan="1" class="confluenceTd">Whether to request credential delegation or
not in the KerberosClient.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.kerberos.use.credential.delegation</td><td
colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1"
rowspan="1" class="confluenceTd">Whether to use credential delegation or not in
the KerberosClient.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.kerberos.is.username.in.servicename.form</td><td
colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1"
rowspan="1" class="confluenceTd">Whether the
Kerberos username is in servicename form or not.</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>ws-security.kerberos.client</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>n/a</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>A reference to the <a shape="rect"
class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/kerberos/KerberosClient.java?view=markup">KerberosClient</a>
class used to obtain a service ticket.</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ws-security.kerberos.jaas.context</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>n/a</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The JAAS Context name to use for
Kerberos.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.kerberos.spn</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>n/a</p></td><td colspan="1" rowspan="1"
class="c
onfluenceTd"><p>The Kerberos Service Provider Name (spn) to
use.</p></td></tr></tbody></table></div><h4
id="WS-SecurityPolicy-ConfiguringviaSpring">Configuring via Spring</h4><p>The
properties are easily configured as client or endpoint properties--use the
former for the SOAP client, the latter for the web service provider.</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
+<div id="ConfluenceContent"><h1
id="WS-SecurityPolicy-WS-SecurityPolicy">WS-SecurityPolicy</h1><p>CXF 2.2
introduced support for using <a shape="rect" class="external-link"
href="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/v1.3/ws-securitypolicy.html"
rel="nofollow">WS-SecurityPolicy</a> to configure WSS4J instead of the custom
configuration documented on the <a shape="rect"
href="ws-security.html">WS-Security</a> page. However, all of the "background"
material on the <a shape="rect" href="ws-security.html">WS-Security</a> page
still applies and is important to know. WS-SecurityPolicy just provides an
easier and more standards based way to configure and control the security
requirements. With the security requirements documented in the WSDL as <a
shape="rect" href="ws-policy.html">WS-Policy</a> fragments, other tools such as
.NET can easily know how to configure themselves to inter-operate with CXF
services.</p><p>CXF supports WS-SecurityPolicy versions 1.1 and later. It does
not support WS-SecurityPolicy 1.0.</p><h3
id="WS-SecurityPolicy-Backwardscompatibilityconfigurationnote">Backwards
compatibility configuration note</h3><p>From Apache CXF 3.1.0, some of the
WS-Security based configuration tags have been changed to just start with
"security-". This is so that they can be shared with the <a shape="rect"
href="jax-rs-xml-security.html">JAX-RS XML Security</a> component. Apart from
the prefix change, the tags are exactly the same. Older "ws-security-" values
continue to be accepted in CXF 3.1.0. See the <a shape="rect"
href="security-configuration.html">Security Configuration</a> page for
information on the new shared configuration tags.</p><h3
id="WS-SecurityPolicy-EnablingWS-SecurityPolicy">Enabling
WS-SecurityPolicy</h3><p>In CXF 2.2, if the cxf-rt-ws-policy and
cxf-rt-ws-security modules are available on the classpath, the
WS-SecurityPolicy stuff is automatically enabled. Since the entire security
runtime is policy driven, the only requirement is t
hat the policy engine and security policies be available.</p><p>If you are
using the full "bundle" jar, all the security and policy stuff is already
included.</p><h3 id="WS-SecurityPolicy-Policydescription">Policy
description</h3><p>With WS-SecurityPolicy, the binding and/or operation in the
wsdl references a <a shape="rect" href="ws-policy.html">WS-Policy</a> fragment
that describes the basic security requirements for interacting with that
service. The <a shape="rect" class="external-link"
href="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/v1.3/ws-securitypolicy.html"
rel="nofollow">WS-SecurityPolicy specification</a> allows for specifying
things like asymmetric/symmetric keys, using transports (https) for encryption,
which parts/headers to encrypt or sign, whether to sign then encrypt or encrypt
then sign, whether to include timestamps, whether to use derived keys, etc...
Basically, it describes what actions are necessary to securely interact with
the service described in th
e WSDL.</p><p>However, the WS-SecurityPolicy fragment does not include
"everything" that is required for a runtime to be able to able to create the
messages. It does not describe things such as locations of key stores, user
names and passwords, etc... Those need to be configured in at runtime to
augment the WS-SecurityPolicy fragment.</p><h3
id="WS-SecurityPolicy-Configuringtheextraproperties">Configuring the extra
properties</h3><p>There are several extra properties that may need to be set to
provide the additional bits of information to the runtime. Note that you should
check that a particular property is supported in the version of CXF you are
using. First, see the <a shape="rect"
href="security-configuration.html">Security Configuration</a> page for
information on the configuration tags that are shared with the JAX-RS XML
Security component. Here are configuration tags that only apply to the
WS-SecurityPolicy layer, and hence all start with "ws-security" (as opposed to
the commo
n tags which now start with "security-").</p><p> </p><h4
id="WS-SecurityPolicy-BooleanWS-Securityconfigurationtags,e.g.thevalueshouldbe"true"or"false".">Boolean
WS-Security configuration tags, e.g. the value should be "true" or
"false".</h4><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>constant</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>default</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>definition</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.validate.token</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Whether to validate the password of a received
UsernameToken or not.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.username-token.always.encrypted</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>tr
ue</p></td><td colspan="1" rowspan="1" class="confluenceTd"><p>Whether to
always encrypt UsernameTokens that are defined as a SupportingToken. This
should not be set to false in a production environment, as it exposes the
password (or the digest of the password) on the wire.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.is-bsp-compliant</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>true</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Whether to ensure compliance with the Basic Security
Profile (BSP) 1.1 or not.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.self-sign-saml-assertion</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>false</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Whether to self-sign a SAML Assertion or
not. If this is set to true, then an enveloped signature will be generated when
the SAML Assertion is constructed. Only applies up to CXF 2.7.x.</
p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.enable.nonce.cache</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>(varies)</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Whether to cache UsernameToken nonces. See
<a shape="rect"
href="http://cxf.apache.org/javadoc/latest/org/apache/cxf/ws/security/SecurityConstants.html#ENABLE_NONCE_CACHE">here</a>
for more information.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.enable.timestamp.cache</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>(varies)</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>Whether to cache Timestamp
Created Strings. See <a shape="rect"
href="http://cxf.apache.org/javadoc/latest/org/apache/cxf/ws/security/SecurityConstants.html#ENABLE_TIMESTAMP_CACHE">here</a>
for more information.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.enable.saml.cache</td><td colspan="1" rowsp
an="1" class="confluenceTd">(varies)</td><td colspan="1" rowspan="1"
class="confluenceTd">Whether to cache SAML2 Token Identifiers, if the token
contains a "OneTimeUse" Condition.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.enable.streaming</td><td colspan="1"
rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1"
class="confluenceTd">Whether to enable streaming WS-Security.</td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd">ws-security.return.security.error</td><td colspan="1"
rowspan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Whether to return the security error message to the
client, and not one of the default error QNames.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd">ws-security.must-understand</td><td colspan="1"
rowspan="1" class="confluenceTd">true</td><td colspan="1" rowspan="1"
class="confluenceTd"><p>Set this to "false" in order to remove the SOAP mustU
nderstand header from security headers generated based on a
WS-SecurityPolicy.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.store.bytes.in.attachment</td><td colspan="1"
rowspan="1" class="confluenceTd">(varies)</td><td colspan="1" rowspan="1"
class="confluenceTd"><strong>CXF 3.1.3/3.0.6</strong> Whether to store bytes
(CipherData or BinarySecurityToken) in an attachment if MTOM is enabled. True
by default in CXF 3.1.x, false for CXF 3.0.x.</td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd">ws-security.use.str.transform</td><td
colspan="1" rowspan="1" class="confluenceTd">true</td><td colspan="1"
rowspan="1" class="confluenceTd"><p><strong>CXF 3.1.5/3.0.8 </strong>Whether to
use the STR (Security Token Reference) Transform when (externally) signing a
SAML Token. The default is true.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.add.inclusive.prefixes</td><td colspan="1"
rowspan="1" class="confluenceTd">true<
/td><td colspan="1" rowspan="1" class="confluenceTd"><strong>CXF
3.1.7</strong> Whether to add an InclusiveNamespaces PrefixList as a
CanonicalizationMethod child when generating Signatures using
WSConstants.C14N_EXCL_OMIT_COMMENTS.</td></tr></tbody></table></div><h4
id="WS-SecurityPolicy-Non-booleanWS-SecurityConfigurationparameters">Non-boolean
WS-Security Configuration parameters</h4><div class="table-wrap"><table
class="confluenceTable"><tbody><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.timestamp.timeToLive</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The time in seconds to append
to the Creation value of an incoming Timestamp to determine whether to accept
the Timestamp as valid or not. The default value is 300 seconds (5
minutes).</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.timestamp.futureTimeToLive</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The time in seconds in the
future with
in which the Created time of an incoming Timestamp is valid. The default value
is "60". See <a shape="rect"
href="http://cxf.apache.org/javadoc/latest/org/apache/cxf/ws/security/SecurityConstants.html#TIMESTAMP_FUTURE_TTL">here</a>
for more information.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.spnego.client.action</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The <a shape="rect"
class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/spnego/SpnegoClientAction.html">SpnegoClientAction</a>
implementation to use for SPNEGO. This allows the user to plug in a different
implementation to obtain a service ticket.</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd"><p>ws-security.nonce.cache.instance</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>This holds a reference to a <a
shape="rect" class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/cache/R
eplayCache.html">ReplayCache</a> instance used to cache UsernameToken nonces.
The default instance that is used is the <a shape="rect" class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/cache/EHCacheReplayCache.java?view=markup">EHCacheReplayCache</a>.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.timestamp.cache.instance</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>This holds a reference to a <a
shape="rect" class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/cache/ReplayCache.html">ReplayCache</a>
instance used to cache Timestamp Created Strings. The default instance that is
used is the <a shape="rect" class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/cache/EHCacheReplayCache.java?view=markup">EHCacheReplayCache</a>.</p></td></tr><tr><td
colspan="1" rowspa
n="1" class="confluenceTd">ws-security.saml.cache.instance</td><td colspan="1"
rowspan="1" class="confluenceTd">This holds a reference to a <a shape="rect"
class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/cache/ReplayCache.html">ReplayCache</a>
instance used to cache SAML2 Token Identifiers, when the token has a
"OneTimeUse" Condition. The default instance that is used is the <a
shape="rect" class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/cache/EHCacheReplayCache.java?view=markup">EHCacheReplayCache</a>.</td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.cache.config.file</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>Set this property to point to a
configuration file for the underlying caching implementation. The default
configuration file that is used is <a shape="rect" class="external-link"
href="http://svn.apache.org/viewvc/cxf/tr
unk/rt/ws/security/src/main/resources/cxf-ehcache.xml?view=markup">cxf-ehcache.xml</a>
in the cxf-rt-ws-security module.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>org.apache.cxf.ws.security.tokenstore.TokenStore</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The <a shape="rect"
class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/tokenstore/TokenStore.java?view=markup">TokenStore</a>
instance to use to cache security tokens. By default this uses the <a
shape="rect" class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/tokenstore/EHCacheTokenStore.java?view=markup">EHCacheTokenStore</a>
if EhCache is available. Otherwise it uses the <a shape="rect"
class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/tokenstore/MemoryTokenStore.java?view=m
arkup">MemoryTokenStore</a>.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.cache.identifier</td><td colspan="1"
rowspan="1" class="confluenceTd">The Cache Identifier to use with the
TokenStore. CXF uses the following key to retrieve a token store:
"org.apache.cxf.ws.security.tokenstore.TokenStore-<identifier>". This key
can be used to configure service-specific cache configuration. If the
identifier does not match, then it falls back to a cache configuration with key
"org.apache.cxf.ws.security.tokenstore.TokenStore". The default
"<identifier>" is the QName of the service in question.</td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.role.classifier</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>If one of the WSS4J Validators returns a
JAAS Subject from Validation, then the WSS4JInInterceptor will attempt to
create a SecurityContext based on this Subject. If this value is not specified,
then it tries
to get roles using the DefaultSecurityContext in cxf-rt-core. Otherwise it
uses this value in combination with the SUBJECT_ROLE_CLASSIFIER_TYPE to get the
roles from the Subject.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.role.classifier.type</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>If one of the WSS4J Validators
returns a JAAS Subject from Validation, then the WSS4JInInterceptor will
attempt to create a SecurityContext based on this Subject. Currently accepted
values are "prefix" or "classname". Must be used in conjunction with the
SUBJECT_ROLE_CLASSIFIER. The default value is "prefix".</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.asymmetric.signature.algorithm</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>This configuration tag
overrides the default Asymmetric Signature algorithm (RSA-SHA1) for use in
WS-SecurityPolicy, as the WS-SecurityPolicy specification does not allow t
he use of other algorithms at present.</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd">ws-security.symmetric.signature.algorithm</td><td
colspan="1" rowspan="1" class="confluenceTd">This configuration tag overrides
the default Symmetric Signature algorithm (HMAC-SHA1) for use in
WS-SecurityPolicy, as the WS-SecurityPolicy specification does not allow the
use of other algorithms at present.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.password.encryptor.instance</td><td
colspan="1" rowspan="1" class="confluenceTd"><p>A PasswordEncryptor instance,
which is used to encrypt or decrypt passwords in the Merlin Crypto
implementation</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.delegated.credential</td><td colspan="1"
rowspan="1" class="confluenceTd">A delegated credential to use for WS-Security.
Currently only a Kerberos GSSCredential Object is supported. This is used to
retrieve a service ticket instead of usi
ng the client credentials.</td></tr></tbody></table></div><h4
id="WS-SecurityPolicy-Validatorimplementationsforvalidatingreceivedsecuritytokens">Validator
implementations for validating received security tokens</h4><div
class="table-wrap"><table class="confluenceTable"><tbody><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>ws-security.ut.validator</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>The WSS4J Validator instance to
use to validate UsernameTokens. The default value is the <a shape="rect"
class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/validate/UsernameTokenValidator.html">UsernameTokenValidator</a>.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.saml1.validator</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The WSS4J Validator instance to use to
validate SAML 1.1 Tokens. The default value is the <a shape="rect"
class="external-link" href="http://ws.apache.org/wss4j/apid
ocs/org/apache/ws/security/validate/SamlAssertionValidator.html">SamlAssertionValidator</a>.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.saml2.validator</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The WSS4J Validator instance to use to
validate SAML 2.0 Tokens. The default value is the <a shape="rect"
class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/validate/SamlAssertionValidator.html">SamlAssertionValidator</a>.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.timestamp.validator</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The WSS4J Validator instance to use to
validate Timestamps. The default value is the <a shape="rect"
class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/validate/TimestampValidator.html">TimestampValidator</a>.</p></td></tr><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>ws-security.si
gnature.validator</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>The WSS4J Validator instance to use to validate trust
in credentials used in Signature verification. The default value is the <a
shape="rect" class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/validate/SignatureTrustValidator.html">SignatureTrustValidator</a>.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.bst.validator</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The WSS4J Validator instance to use to
validate BinarySecurityTokens. The default value is the <a shape="rect"
class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/validate/NoOpValidator.html">NoOpValidator</a>.</p></td></tr><tr><td
colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.sct.validator</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>The WSS4J Validator instance to use to
validate SecurityContextToken
s. The default value is the <a shape="rect" class="external-link"
href="http://ws.apache.org/wss4j/apidocs/org/apache/ws/security/validate/NoOpValidator.html">NoOpValidator</a>.</p></td></tr></tbody></table></div><h4
id="WS-SecurityPolicy-KerberosConfigurationtags">Kerberos Configuration
tags</h4><div class="table-wrap"><table class="confluenceTable"><tbody><tr><td
colspan="1" rowspan="1" class="confluenceTd"><p>constant</p></td><td
colspan="1" rowspan="1" class="confluenceTd"><p>default</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>definition</p></td></tr><tr><td colspan="1"
rowspan="1"
class="confluenceTd">ws-security.kerberos.request.credential.delegation</td><td
colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1"
rowspan="1" class="confluenceTd">Whether to request credential delegation or
not in the KerberosClient.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.kerberos.use.credential.delegation</td><td
colspan="1" rows
pan="1" class="confluenceTd">false</td><td colspan="1" rowspan="1"
class="confluenceTd">Whether to use credential delegation or not in the
KerberosClient.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd">ws-security.kerberos.is.username.in.servicename.form</td><td
colspan="1" rowspan="1" class="confluenceTd">false</td><td colspan="1"
rowspan="1" class="confluenceTd">Whether the Kerberos username is in
servicename form or not.</td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.kerberos.client</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>n/a</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>A reference to the <a shape="rect"
class="external-link"
href="http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/kerberos/KerberosClient.java?view=markup">KerberosClient</a>
class used to obtain a service ticket.</p></td></tr><tr><td colspan="1"
rowspan="1" class="confluenceTd"><p>ws-securit
y.kerberos.jaas.context</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>n/a</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>The JAAS Context name to use for
Kerberos.</p></td></tr><tr><td colspan="1" rowspan="1"
class="confluenceTd"><p>ws-security.kerberos.spn</p></td><td colspan="1"
rowspan="1" class="confluenceTd"><p>n/a</p></td><td colspan="1" rowspan="1"
class="confluenceTd"><p>The Kerberos Service Provider Name (spn) to
use.</p></td></tr></tbody></table></div><h4
id="WS-SecurityPolicy-ConfiguringviaSpring">Configuring via Spring</h4><p>The
properties are easily configured as client or endpoint properties--use the
former for the SOAP client, the latter for the web service provider.</p><div
class="code panel pdl" style="border-width: 1px;"><div class="codeContent
panelContent pdl">
<pre class="brush: xml; gutter: false; theme: Default"
style="font-size:12px;"><beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"