Class AbstractBindingBuilder
- java.lang.Object
-
- org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractCommonBindingHandler
-
- org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder
-
- Direct Known Subclasses:
AsymmetricBindingHandler,SymmetricBindingHandler,TransportBindingHandler
public abstract class AbstractBindingBuilder extends AbstractCommonBindingHandler
-
-
Field Summary
Fields Modifier and Type Field Description protected AssertionInfoMapaimprotected org.apache.wss4j.policy.model.AbstractBindingbindingprotected ElementbottomUpElementprotected ElementbstElementprotected org.apache.wss4j.dom.callback.CallbackLookupcallbackLookupstatic StringCRYPTO_CACHEprotected Set<org.apache.wss4j.common.WSEncryptionPart>encryptedTokensListprotected ElementlastEncryptedKeyElementprotected static LoggerLOGprotected StringmainSigIdprotected org.apache.wss4j.policy.model.AbstractSymmetricAsymmetricBinding.ProtectionOrderprotectionOrderprotected javax.xml.soap.SOAPMessagesaajprotected org.apache.wss4j.dom.message.WSSecHeadersecHeaderprotected List<org.apache.wss4j.common.WSEncryptionPart>sigConfListprotected Set<Integer>signaturesprotected booleanstoreBytesInAttachmentprotected org.apache.wss4j.dom.message.WSSecTimestamptimestampElprotected ElementtopDownElementprotected org.apache.wss4j.dom.WSDocInfowsDocInfoprotected org.apache.wss4j.dom.engine.WSSConfigwssConfig-
Fields inherited from class org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractCommonBindingHandler
message
-
-
Constructor Summary
Constructors Constructor Description AbstractBindingBuilder(org.apache.wss4j.dom.engine.WSSConfig config, org.apache.wss4j.policy.model.AbstractBinding binding, javax.xml.soap.SOAPMessage saaj, org.apache.wss4j.dom.message.WSSecHeader secHeader, AssertionInfoMap aim, SoapMessage message)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddDerivedKeyElement(Element el)protected org.apache.wss4j.dom.message.WSSecUsernameTokenaddDKUsernameToken(org.apache.wss4j.policy.model.UsernameToken token, byte[] salt, boolean useMac)protected voidaddEncryptedKeyElement(Element el)protected org.apache.wss4j.common.saml.SamlAssertionWrapperaddSamlToken(org.apache.wss4j.policy.model.SamlToken token)protected voidaddSig(byte[] val)protected voidaddSignatureConfirmation(List<org.apache.wss4j.common.WSEncryptionPart> sigParts)protected voidaddSignatureParts(List<org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.SupportingToken> tokenList, List<org.apache.wss4j.common.WSEncryptionPart> sigParts)protected voidaddSupportingElement(Element el)protected voidaddSupportingTokens(List<org.apache.wss4j.common.WSEncryptionPart> sigs)protected voidaddTopDownElement(Element el)protected org.apache.wss4j.dom.message.WSSecUsernameTokenaddUsernameToken(org.apache.wss4j.policy.model.UsernameToken token)StringaddWsuIdToElement(Element element)Generates a wsu:Id attribute for the providedElementand returns the attribute value or finds and returns the value of the attribute if it already exists.protected ElementcloneElement(Element el)org.apache.wss4j.common.WSEncryptionPartconvertToEncryptionPart(Element element)Convert a DOM Element into a WSEncryptionPart, adding a (wsu:)Id if there is not one already.protected org.apache.wss4j.dom.message.WSSecTimestampcreateTimestamp()protected voiddoEndorse()protected voiddoEndorsedSignatures(List<org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.SupportingToken> tokenList, boolean isTokenProtection, boolean isSigProtect)protected StringfindIDFromSamlToken(Element samlToken)protected org.apache.wss4j.common.crypto.CryptogetCrypto(String cryptoKey, String propKey)protected Map<Object,org.apache.wss4j.common.crypto.Crypto>getCryptoCache()protected List<org.apache.wss4j.common.WSEncryptionPart>getElements(String encryptionModifier, List<org.apache.wss4j.policy.model.XPath> xpaths, List<Element> found, boolean forceId)Identifies the portions of the message to be signed/encrypted.protected org.apache.wss4j.dom.message.WSSecEncryptedKeygetEncryptedKeyBuilder(org.apache.wss4j.policy.model.AbstractToken token, SecretKey symmetricKey)protected org.apache.wss4j.dom.engine.WSSecurityEngineResultgetEncryptedKeyResult()List<org.apache.wss4j.common.WSEncryptionPart>getEncryptedParts()org.apache.wss4j.common.crypto.CryptogetEncryptionCrypto()protected List<org.apache.wss4j.common.WSEncryptionPart>getParts(boolean sign, boolean includeBody, List<org.apache.wss4j.common.WSEncryptionPart> parts, List<Element> found)Identifies the portions of the message to be signed/encrypted.List<org.apache.wss4j.common.WSEncryptionPart>getPartsAndElements(boolean sign, boolean includeBody, List<org.apache.wss4j.common.WSEncryptionPart> parts, List<org.apache.wss4j.policy.model.XPath> xpaths, List<org.apache.wss4j.policy.model.XPath> contentXpaths)Identifies the portions of the message to be signed/encrypted.protected StringgetPassword(String userName, org.apache.neethi.Assertion info, int usage)protected org.apache.wss4j.dom.message.WSSecSignaturegetSignatureBuilder(org.apache.wss4j.policy.model.AbstractToken token, boolean attached, boolean endorse)org.apache.wss4j.common.crypto.CryptogetSignatureCrypto()List<org.apache.wss4j.common.WSEncryptionPart>getSignedParts(org.apache.wss4j.policy.model.SupportingTokens supportingToken)protected TokenStoregetTokenStore()static StringgetUsername(List<org.apache.wss4j.dom.handler.WSHandlerResult> results)Scan throughWSHandlerResultlist for a Username token and return the username if a Username Token foundvoidhandleEncryptedSignedHeaders(List<org.apache.wss4j.common.WSEncryptionPart> encryptedParts, List<org.apache.wss4j.common.WSEncryptionPart> signedParts)Processes the parts to be signed and reconfigures those parts that have already been encrypted.protected org.apache.wss4j.dom.message.WSSecTimestamphandleLayout(org.apache.wss4j.dom.message.WSSecTimestamp timestamp)protected List<org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.SupportingToken>handleSupportingTokens(org.apache.wss4j.policy.model.SupportingTokens suppTokens, boolean endorse, List<org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.SupportingToken> ret)protected voidhandleUsernameTokenSupportingToken(org.apache.wss4j.policy.model.UsernameToken token, boolean endorse, boolean encryptedToken, List<org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.SupportingToken> ret)protected voidinsertAfter(Element child, Element sib)protected voidinsertBeforeBottomUp(Element el)booleanisExpandXopInclude()protected voidreshuffleTimestamp()StringsetEncryptionUser(org.apache.wss4j.dom.message.WSSecEncryptedKey encrKeyBuilder, org.apache.wss4j.policy.model.AbstractToken token, boolean sign, org.apache.wss4j.common.crypto.Crypto crypto)voidsetKeyIdentifierType(org.apache.wss4j.dom.message.WSSecBase secBase, org.apache.wss4j.policy.model.AbstractToken token)protected voidstoreAssertionAsSecurityToken(org.apache.wss4j.common.saml.SamlAssertionWrapper assertion)Store a SAML Assertion as a SecurityToken-
Methods inherited from class org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractCommonBindingHandler
assertAlgorithmSuite, assertPolicy, assertPolicy, assertToken, assertTokenWrapper, assertTrustProperties, assertWSSProperties, getAllAssertionsByLocalname, getMessage, getSecurityToken, getWss10, isRequestor, isTokenRequired, unassertPolicy, unassertPolicy
-
-
-
-
Field Detail
-
CRYPTO_CACHE
public static final String CRYPTO_CACHE
- See Also:
- Constant Field Values
-
LOG
protected static final Logger LOG
-
protectionOrder
protected org.apache.wss4j.policy.model.AbstractSymmetricAsymmetricBinding.ProtectionOrder protectionOrder
-
wssConfig
protected final org.apache.wss4j.dom.engine.WSSConfig wssConfig
-
saaj
protected javax.xml.soap.SOAPMessage saaj
-
secHeader
protected org.apache.wss4j.dom.message.WSSecHeader secHeader
-
aim
protected AssertionInfoMap aim
-
binding
protected org.apache.wss4j.policy.model.AbstractBinding binding
-
timestampEl
protected org.apache.wss4j.dom.message.WSSecTimestamp timestampEl
-
mainSigId
protected String mainSigId
-
sigConfList
protected List<org.apache.wss4j.common.WSEncryptionPart> sigConfList
-
encryptedTokensList
protected Set<org.apache.wss4j.common.WSEncryptionPart> encryptedTokensList
-
bottomUpElement
protected Element bottomUpElement
-
topDownElement
protected Element topDownElement
-
bstElement
protected Element bstElement
-
lastEncryptedKeyElement
protected Element lastEncryptedKeyElement
-
callbackLookup
protected final org.apache.wss4j.dom.callback.CallbackLookup callbackLookup
-
storeBytesInAttachment
protected boolean storeBytesInAttachment
-
wsDocInfo
protected org.apache.wss4j.dom.WSDocInfo wsDocInfo
-
-
Constructor Detail
-
AbstractBindingBuilder
public AbstractBindingBuilder(org.apache.wss4j.dom.engine.WSSConfig config, org.apache.wss4j.policy.model.AbstractBinding binding, javax.xml.soap.SOAPMessage saaj, org.apache.wss4j.dom.message.WSSecHeader secHeader, AssertionInfoMap aim, SoapMessage message) throws javax.xml.soap.SOAPException- Throws:
javax.xml.soap.SOAPException
-
-
Method Detail
-
addDerivedKeyElement
protected void addDerivedKeyElement(Element el)
-
addEncryptedKeyElement
protected void addEncryptedKeyElement(Element el)
-
addSupportingElement
protected void addSupportingElement(Element el)
-
insertBeforeBottomUp
protected void insertBeforeBottomUp(Element el)
-
addTopDownElement
protected void addTopDownElement(Element el)
-
getTokenStore
protected final TokenStore getTokenStore() throws TokenStoreException
- Throws:
TokenStoreException
-
createTimestamp
protected org.apache.wss4j.dom.message.WSSecTimestamp createTimestamp()
-
handleLayout
protected org.apache.wss4j.dom.message.WSSecTimestamp handleLayout(org.apache.wss4j.dom.message.WSSecTimestamp timestamp)
-
reshuffleTimestamp
protected void reshuffleTimestamp()
-
handleSupportingTokens
protected List<org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.SupportingToken> handleSupportingTokens(org.apache.wss4j.policy.model.SupportingTokens suppTokens, boolean endorse, List<org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.SupportingToken> ret) throws org.apache.wss4j.common.ext.WSSecurityException, javax.xml.soap.SOAPException, TokenStoreException
- Throws:
org.apache.wss4j.common.ext.WSSecurityExceptionjavax.xml.soap.SOAPExceptionTokenStoreException
-
handleUsernameTokenSupportingToken
protected void handleUsernameTokenSupportingToken(org.apache.wss4j.policy.model.UsernameToken token, boolean endorse, boolean encryptedToken, List<org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.SupportingToken> ret) throws org.apache.wss4j.common.ext.WSSecurityException- Throws:
org.apache.wss4j.common.ext.WSSecurityException
-
addSignatureParts
protected void addSignatureParts(List<org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.SupportingToken> tokenList, List<org.apache.wss4j.common.WSEncryptionPart> sigParts)
-
addUsernameToken
protected org.apache.wss4j.dom.message.WSSecUsernameToken addUsernameToken(org.apache.wss4j.policy.model.UsernameToken token)
-
addDKUsernameToken
protected org.apache.wss4j.dom.message.WSSecUsernameToken addDKUsernameToken(org.apache.wss4j.policy.model.UsernameToken token, byte[] salt, boolean useMac)
-
addSamlToken
protected org.apache.wss4j.common.saml.SamlAssertionWrapper addSamlToken(org.apache.wss4j.policy.model.SamlToken token) throws org.apache.wss4j.common.ext.WSSecurityException, TokenStoreException- Throws:
org.apache.wss4j.common.ext.WSSecurityExceptionTokenStoreException
-
storeAssertionAsSecurityToken
protected void storeAssertionAsSecurityToken(org.apache.wss4j.common.saml.SamlAssertionWrapper assertion) throws TokenStoreExceptionStore a SAML Assertion as a SecurityToken- Throws:
TokenStoreException
-
getPassword
protected String getPassword(String userName, org.apache.neethi.Assertion info, int usage)
-
addWsuIdToElement
public String addWsuIdToElement(Element element)
Generates a wsu:Id attribute for the providedElementand returns the attribute value or finds and returns the value of the attribute if it already exists.- Parameters:
element- theElementto check/create the attribute on- Returns:
- the generated or discovered wsu:Id attribute value
-
getEncryptedParts
public List<org.apache.wss4j.common.WSEncryptionPart> getEncryptedParts() throws javax.xml.soap.SOAPException
- Throws:
javax.xml.soap.SOAPException
-
getSignedParts
public List<org.apache.wss4j.common.WSEncryptionPart> getSignedParts(org.apache.wss4j.policy.model.SupportingTokens supportingToken) throws javax.xml.soap.SOAPException
- Throws:
javax.xml.soap.SOAPException
-
getPartsAndElements
public List<org.apache.wss4j.common.WSEncryptionPart> getPartsAndElements(boolean sign, boolean includeBody, List<org.apache.wss4j.common.WSEncryptionPart> parts, List<org.apache.wss4j.policy.model.XPath> xpaths, List<org.apache.wss4j.policy.model.XPath> contentXpaths) throws javax.xml.soap.SOAPException
Identifies the portions of the message to be signed/encrypted.- Parameters:
sign- whether the matches are to be signed or encryptedincludeBody- if the body should be included in the signature/encryptionparts- anyWSEncryptionParts to match for signature or encryption as specified by WS-SP signed parts or encrypted parts. Parts without a name match all elements with the provided namespace.xpaths- any XPath expressions to sign/encrypt matchescontentXpaths- any XPath expressions to content encrypt- Returns:
- a configured list of
WSEncryptionParts suitable for processing by WSS4J - Throws:
javax.xml.soap.SOAPException- if there is an error extracting SOAP content from the SAAJ model
-
getParts
protected List<org.apache.wss4j.common.WSEncryptionPart> getParts(boolean sign, boolean includeBody, List<org.apache.wss4j.common.WSEncryptionPart> parts, List<Element> found) throws javax.xml.soap.SOAPException
Identifies the portions of the message to be signed/encrypted.- Parameters:
sign- whether the matches are to be signed or encryptedincludeBody- if the body should be included in the signature/encryptionparts- anyWSEncryptionParts to match for signature or encryption as specified by WS-SP signed parts or encrypted parts. Parts without a name match all elements with the provided namespace.found- a list of elements that have previously been tagged for signing/encryption. Populated with additional matches found by this method and used to prevent including the same element twice under the same operation.- Returns:
- a configured list of
WSEncryptionParts suitable for processing by WSS4J - Throws:
javax.xml.soap.SOAPException- if there is an error extracting SOAP content from the SAAJ model
-
getElements
protected List<org.apache.wss4j.common.WSEncryptionPart> getElements(String encryptionModifier, List<org.apache.wss4j.policy.model.XPath> xpaths, List<Element> found, boolean forceId) throws javax.xml.soap.SOAPException
Identifies the portions of the message to be signed/encrypted.- Parameters:
encryptionModifier- indicates the scope of the crypto operation over matched elements. Either "Content" or "Element".xpaths- any XPath expressions to sign/encrypt matchesfound- a list of elements that have previously been tagged for signing/encryption. Populated with additional matches found by this method and used to prevent including the same element twice under the same operation.forceId- force adding a wsu:Id onto the elements. Recommended for signatures.- Returns:
- a configured list of
WSEncryptionParts suitable for processing by WSS4J - Throws:
javax.xml.soap.SOAPException- if there is an error extracting SOAP content from the SAAJ model
-
getEncryptedKeyBuilder
protected org.apache.wss4j.dom.message.WSSecEncryptedKey getEncryptedKeyBuilder(org.apache.wss4j.policy.model.AbstractToken token, SecretKey symmetricKey) throws org.apache.wss4j.common.ext.WSSecurityException- Throws:
org.apache.wss4j.common.ext.WSSecurityException
-
getSignatureCrypto
public org.apache.wss4j.common.crypto.Crypto getSignatureCrypto() throws org.apache.wss4j.common.ext.WSSecurityException- Throws:
org.apache.wss4j.common.ext.WSSecurityException
-
getEncryptionCrypto
public org.apache.wss4j.common.crypto.Crypto getEncryptionCrypto() throws org.apache.wss4j.common.ext.WSSecurityException- Throws:
org.apache.wss4j.common.ext.WSSecurityException
-
getCrypto
protected org.apache.wss4j.common.crypto.Crypto getCrypto(String cryptoKey, String propKey) throws org.apache.wss4j.common.ext.WSSecurityException
- Throws:
org.apache.wss4j.common.ext.WSSecurityException
-
setKeyIdentifierType
public void setKeyIdentifierType(org.apache.wss4j.dom.message.WSSecBase secBase, org.apache.wss4j.policy.model.AbstractToken token)
-
setEncryptionUser
public String setEncryptionUser(org.apache.wss4j.dom.message.WSSecEncryptedKey encrKeyBuilder, org.apache.wss4j.policy.model.AbstractToken token, boolean sign, org.apache.wss4j.common.crypto.Crypto crypto)
-
getUsername
public static String getUsername(List<org.apache.wss4j.dom.handler.WSHandlerResult> results)
Scan throughWSHandlerResultlist for a Username token and return the username if a Username Token found- Parameters:
results-- Returns:
-
getEncryptedKeyResult
protected org.apache.wss4j.dom.engine.WSSecurityEngineResult getEncryptedKeyResult()
-
getSignatureBuilder
protected org.apache.wss4j.dom.message.WSSecSignature getSignatureBuilder(org.apache.wss4j.policy.model.AbstractToken token, boolean attached, boolean endorse) throws org.apache.wss4j.common.ext.WSSecurityException, TokenStoreException- Throws:
org.apache.wss4j.common.ext.WSSecurityExceptionTokenStoreException
-
doEndorsedSignatures
protected void doEndorsedSignatures(List<org.apache.cxf.ws.security.wss4j.policyhandlers.AbstractBindingBuilder.SupportingToken> tokenList, boolean isTokenProtection, boolean isSigProtect)
-
addSupportingTokens
protected void addSupportingTokens(List<org.apache.wss4j.common.WSEncryptionPart> sigs) throws org.apache.wss4j.common.ext.WSSecurityException
- Throws:
org.apache.wss4j.common.ext.WSSecurityException
-
doEndorse
protected void doEndorse()
-
addSignatureConfirmation
protected void addSignatureConfirmation(List<org.apache.wss4j.common.WSEncryptionPart> sigParts)
-
handleEncryptedSignedHeaders
public void handleEncryptedSignedHeaders(List<org.apache.wss4j.common.WSEncryptionPart> encryptedParts, List<org.apache.wss4j.common.WSEncryptionPart> signedParts)
Processes the parts to be signed and reconfigures those parts that have already been encrypted.- Parameters:
encryptedParts- the parts that have been encryptedsignedParts- the parts that are to be signed- Throws:
IllegalArgumentException- if an element insignedPartscontains aWSEncryptionPartwith anullidvalue and theWSEncryptionPartnamevalue is not "Token"
-
convertToEncryptionPart
public org.apache.wss4j.common.WSEncryptionPart convertToEncryptionPart(Element element)
Convert a DOM Element into a WSEncryptionPart, adding a (wsu:)Id if there is not one already.- Parameters:
element- The DOM Element to convert- Returns:
- The WSEncryptionPart representing the DOM Element argument
-
addSig
protected void addSig(byte[] val)
-
isExpandXopInclude
public boolean isExpandXopInclude()
-
-