Package org.apache.wss4j.dom.handler
Class WSHandler
- java.lang.Object
-
- org.apache.wss4j.dom.handler.WSHandler
-
public abstract class WSHandler extends Object
Extracted from WSDoAllReceiver and WSDoAllSender Extended to all passwordless UsernameTokens and configurable identities.
-
-
Constructor Summary
Constructors Constructor Description WSHandler()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected boolean
checkReceiverResults(List<WSSecurityEngineResult> wsResult, List<Integer> actions)
protected boolean
checkReceiverResultsAnyOrder(List<WSSecurityEngineResult> wsResult, List<Integer> actions)
protected void
checkSignatureConfirmation(RequestData reqData, WSHandlerResult handlerResults)
protected void
decodeAlgorithmSuite(RequestData reqData)
protected boolean
decodeBooleanConfigValue(Object messageContext, String configTag, boolean defaultToTrue)
protected void
decodeDecryptionParameter(RequestData reqData)
protected void
decodeEncryptionParameter(RequestData reqData)
protected int
decodeFutureTimeToLive(RequestData reqData, boolean timestamp)
Decode the FutureTimeToLive parameter for either a Timestamp or a UsernameToken Created element, depending on the boolean argumentprotected String
decodePasswordType(RequestData reqData)
protected void
decodeSignatureParameter(RequestData reqData)
protected void
decodeSignatureParameter2(RequestData reqData)
int
decodeTimeToLive(RequestData reqData, boolean timestamp)
Decode the TimeToLive parameter for either a Timestamp or a UsernameToken Created element, depending on the boolean argumentprotected void
decodeUTParameter(RequestData reqData)
protected void
doReceiverAction(List<Integer> actions, RequestData reqData)
protected void
doSenderAction(Document doc, RequestData reqData, List<HandlerAction> actions, boolean isRequest)
Performs all defined security actions to set-up the SOAP request.CallbackHandler
getCallbackHandler(String callbackHandlerClass, String callbackHandlerRef, RequestData requestData)
Get a CallbackHandler instance.ClassLoader
getClassLoader(Object msgCtx)
Returns the classloader to be used for loading the callback classabstract Object
getOption(String key)
abstract String
getPassword(Object msgContext)
CallbackHandler
getPasswordCallbackHandler(RequestData reqData)
Get a CallbackHandler instance to obtain passwords.WSPasswordCallback
getPasswordCB(String username, int doAction, CallbackHandler callbackHandler, RequestData requestData)
Get a password callback (WSPasswordCallback object) from a CallbackHandler instanceprotected PasswordEncryptor
getPasswordEncryptor(RequestData requestData)
abstract Object
getProperty(Object msgContext, String key)
String
getString(String key, Object mc)
Looks up key first viagetOption(String)
and if not found there, viagetProperty(Object, String)
String
getStringOption(String key)
Returns the option onname
.protected Crypto
loadCrypto(String cryptoPropertyFile, String cryptoPropertyRefId, RequestData requestData)
Load a Crypto instance.protected Crypto
loadCryptoFromPropertiesFile(String propFilename, RequestData reqData)
A hook to allow subclass to load Crypto instances from property files in a different way.protected Crypto
loadDecryptionCrypto(RequestData requestData)
Hook to allow subclasses to load their Decryption Crypto however they see fit.protected Crypto
loadEncryptionCrypto(RequestData requestData)
Hook to allow subclasses to load their Encryption Crypto however they see fit.Crypto
loadSignatureCrypto(RequestData requestData)
Hook to allow subclasses to load their Signature creation Crypto however they see fit.Crypto
loadSignatureVerificationCrypto(RequestData requestData)
Hook to allow subclasses to load their Signature verification Crypto however they see fit.abstract void
setPassword(Object msgContext, String password)
abstract void
setProperty(Object msgContext, String key, Object value)
-
-
-
Method Detail
-
doSenderAction
protected void doSenderAction(Document doc, RequestData reqData, List<HandlerAction> actions, boolean isRequest) throws WSSecurityException
Performs all defined security actions to set-up the SOAP request.- Parameters:
doc
- the request as DOM documentreqData
- a data storage to pass values around between methodsactions
- a list holding the actions to do in the order defined in the deployment file or property, plus an optional associated SecurityActionToken object for that Action- Throws:
WSSecurityException
-
doReceiverAction
protected void doReceiverAction(List<Integer> actions, RequestData reqData) throws WSSecurityException
- Throws:
WSSecurityException
-
checkReceiverResults
protected boolean checkReceiverResults(List<WSSecurityEngineResult> wsResult, List<Integer> actions)
-
checkReceiverResultsAnyOrder
protected boolean checkReceiverResultsAnyOrder(List<WSSecurityEngineResult> wsResult, List<Integer> actions)
-
checkSignatureConfirmation
protected void checkSignatureConfirmation(RequestData reqData, WSHandlerResult handlerResults) throws WSSecurityException
- Throws:
WSSecurityException
-
decodeUTParameter
protected void decodeUTParameter(RequestData reqData) throws WSSecurityException
- Throws:
WSSecurityException
-
decodeSignatureParameter
protected void decodeSignatureParameter(RequestData reqData) throws WSSecurityException
- Throws:
WSSecurityException
-
decodeAlgorithmSuite
protected void decodeAlgorithmSuite(RequestData reqData) throws WSSecurityException
- Throws:
WSSecurityException
-
decodeEncryptionParameter
protected void decodeEncryptionParameter(RequestData reqData) throws WSSecurityException
- Throws:
WSSecurityException
-
decodeTimeToLive
public int decodeTimeToLive(RequestData reqData, boolean timestamp)
Decode the TimeToLive parameter for either a Timestamp or a UsernameToken Created element, depending on the boolean argument
-
decodeFutureTimeToLive
protected int decodeFutureTimeToLive(RequestData reqData, boolean timestamp)
Decode the FutureTimeToLive parameter for either a Timestamp or a UsernameToken Created element, depending on the boolean argument
-
decodePasswordType
protected String decodePasswordType(RequestData reqData) throws WSSecurityException
- Throws:
WSSecurityException
-
decodeBooleanConfigValue
protected boolean decodeBooleanConfigValue(Object messageContext, String configTag, boolean defaultToTrue) throws WSSecurityException
- Throws:
WSSecurityException
-
loadSignatureCrypto
public Crypto loadSignatureCrypto(RequestData requestData) throws WSSecurityException
Hook to allow subclasses to load their Signature creation Crypto however they see fit.- Parameters:
requestData
- the RequestData object- Returns:
- a Crypto instance to use for Signature creation
- Throws:
WSSecurityException
-
loadSignatureVerificationCrypto
public Crypto loadSignatureVerificationCrypto(RequestData requestData) throws WSSecurityException
Hook to allow subclasses to load their Signature verification Crypto however they see fit.- Parameters:
requestData
- the RequestData object- Returns:
- a Crypto instance to use for Signature verification
- Throws:
WSSecurityException
-
loadDecryptionCrypto
protected Crypto loadDecryptionCrypto(RequestData requestData) throws WSSecurityException
Hook to allow subclasses to load their Decryption Crypto however they see fit.- Parameters:
requestData
- the RequestData object- Returns:
- a Crypto instance to use for Decryption creation/verification
- Throws:
WSSecurityException
-
loadEncryptionCrypto
protected Crypto loadEncryptionCrypto(RequestData requestData) throws WSSecurityException
Hook to allow subclasses to load their Encryption Crypto however they see fit.- Parameters:
requestData
- the RequestData object- Returns:
- a Crypto instance to use for Encryption creation/verification
- Throws:
WSSecurityException
-
loadCrypto
protected Crypto loadCrypto(String cryptoPropertyFile, String cryptoPropertyRefId, RequestData requestData) throws WSSecurityException
Load a Crypto instance. Firstly, it tries to use the cryptoPropertyRefId tag to retrieve a Crypto object via a custom reference Id. Failing this, it tries to load the crypto instance via the cryptoPropertyFile tag.- Parameters:
requestData
- the RequestData object- Returns:
- a Crypto instance to use for Encryption creation/verification
- Throws:
WSSecurityException
-
loadCryptoFromPropertiesFile
protected Crypto loadCryptoFromPropertiesFile(String propFilename, RequestData reqData) throws WSSecurityException
A hook to allow subclass to load Crypto instances from property files in a different way.- Parameters:
propFilename
- The property file namereqData
- The RequestData object- Returns:
- A Crypto instance that has been loaded
- Throws:
WSSecurityException
-
getCallbackHandler
public CallbackHandler getCallbackHandler(String callbackHandlerClass, String callbackHandlerRef, RequestData requestData) throws WSSecurityException
Get a CallbackHandler instance. First try to get an instance via the callbackHandlerRef on the message context. Failing that, try to load a new instance of the CallbackHandler via the callbackHandlerClass argument.- Parameters:
callbackHandlerClass
- The class name of the CallbackHandler instancecallbackHandlerRef
- The reference name of the CallbackHandler instancerequestData
- The RequestData which supplies the message context- Returns:
- a CallbackHandler instance
- Throws:
WSSecurityException
-
getPasswordCallbackHandler
public CallbackHandler getPasswordCallbackHandler(RequestData reqData) throws WSSecurityException
Get a CallbackHandler instance to obtain passwords.- Parameters:
reqData
- The RequestData which supplies the message context- Returns:
- the CallbackHandler instance to obtain passwords.
- Throws:
WSSecurityException
-
getPasswordEncryptor
protected PasswordEncryptor getPasswordEncryptor(RequestData requestData)
-
getPasswordCB
public WSPasswordCallback getPasswordCB(String username, int doAction, CallbackHandler callbackHandler, RequestData requestData) throws WSSecurityException
Get a password callback (WSPasswordCallback object) from a CallbackHandler instance- Parameters:
username
- The username to supply to the CallbackHandlerdoAction
- The action to performcallbackHandler
- The CallbackHandler instancerequestData
- The RequestData which supplies the message context- Returns:
- the WSPasswordCallback object containing the password
- Throws:
WSSecurityException
-
decodeSignatureParameter2
protected void decodeSignatureParameter2(RequestData reqData) throws WSSecurityException
- Throws:
WSSecurityException
-
decodeDecryptionParameter
protected void decodeDecryptionParameter(RequestData reqData) throws WSSecurityException
- Throws:
WSSecurityException
-
getString
public String getString(String key, Object mc)
Looks up key first viagetOption(String)
and if not found there, viagetProperty(Object, String)
- Parameters:
key
- the key to search for. May not be null.mc
- the message context to search.- Returns:
- the value found.
- Throws:
IllegalArgumentException
- ifkey
is null.
-
getStringOption
public String getStringOption(String key)
Returns the option onname
.- Parameters:
key
- the non-null key of the option.- Returns:
- the option on
key
ifkey
exists and is of type java.lang.String; otherwise null.
-
getClassLoader
public ClassLoader getClassLoader(Object msgCtx)
Returns the classloader to be used for loading the callback class- Parameters:
msgCtx
- The MessageContext- Returns:
- class loader
-
-