Class AbstractWsSecurityInterceptor
java.lang.Object
org.springframework.ws.soap.security.AbstractWsSecurityInterceptor
- All Implemented Interfaces:
ClientInterceptor,EndpointInterceptor,SoapEndpointInterceptor
- Direct Known Subclasses:
Wss4jSecurityInterceptor
public abstract class AbstractWsSecurityInterceptor
extends Object
implements SoapEndpointInterceptor, ClientInterceptor
Interceptor base class for interceptors that handle WS-Security. Can be used on the server side, registered in a
endpoint mapping; or on the client side, on the
web service
template.
Subclasses of this base class can be configured to secure incoming and secure outgoing messages. By default, both are on.
- Since:
- 1.0.0
- Author:
- Arjen Poutsma
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final org.apache.commons.logging.LogLogger available to subclasses.protected static final QName -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidafterCompletion(MessageContext messageContext, Exception ex) Callback after completion of request and response (fault) processing.voidafterCompletion(MessageContext messageContext, Object endpoint, Exception ex) Callback after completion of request and response (fault) processing.protected abstract voidcleanUp()booleanhandleFault(MessageContext messageContext) Returnstrue, i.e.booleanhandleFault(MessageContext messageContext, Object endpoint) Returnstrue, i.e.protected booleanhandleFaultException(WsSecurityFaultException ex, MessageContext messageContext) Handles a fault exception.Default implementation logs the given exception, and creates a SOAP Fault with the properties of the given exception, and returnsfalse.final booleanhandleRequest(MessageContext messageContext) Secures a client-side outgoing request.final booleanhandleRequest(MessageContext messageContext, Object endpoint) Validates a server-side incoming request.final booleanhandleResponse(MessageContext messageContext) Validates a client-side incoming response.final booleanhandleResponse(MessageContext messageContext, Object endpoint) Secures a server-side outgoing response.protected booleanhandleSecurementException(WsSecuritySecurementException ex, MessageContext messageContext) Handles an securement exception.protected booleanhandleValidationException(WsSecurityValidationException ex, MessageContext messageContext) Handles an invalid SOAP message.protected abstract voidsecureMessage(SoapMessage soapMessage, MessageContext messageContext) Abstract template method.voidsetExceptionResolver(EndpointExceptionResolver exceptionResolver) Provide anEndpointExceptionResolverfor resolving validation exceptions.voidsetSecureRequest(boolean secureRequest) Indicates whether client-side outgoing requests are to be secured.voidsetSecureResponse(boolean secureResponse) Indicates whether server-side outgoing responses are to be secured.voidsetSkipValidationIfNoHeaderPresent(boolean skipValidationIfNoHeaderPresent) Allows skipping validation if no security header is present.voidsetValidateRequest(boolean validateRequest) Indicates whether server-side incoming request are to be validated.voidsetValidateResponse(boolean validateResponse) Indicates whether client-side incoming responses are to be validated.booleanunderstands(SoapHeaderElement headerElement) Given aSoapHeaderElement, return whether or not thisSoapEndpointInterceptorunderstands it.protected abstract voidvalidateMessage(SoapMessage soapMessage, MessageContext messageContext) Abstract template method.
-
Field Details
-
logger
protected final org.apache.commons.logging.Log loggerLogger available to subclasses. -
WS_SECURITY_NAME
-
-
Constructor Details
-
AbstractWsSecurityInterceptor
public AbstractWsSecurityInterceptor()
-
-
Method Details
-
setValidateRequest
public void setValidateRequest(boolean validateRequest) Indicates whether server-side incoming request are to be validated. Defaults totrue. -
setSecureResponse
public void setSecureResponse(boolean secureResponse) Indicates whether server-side outgoing responses are to be secured. Defaults totrue. -
setSecureRequest
public void setSecureRequest(boolean secureRequest) Indicates whether client-side outgoing requests are to be secured. Defaults totrue. -
setValidateResponse
public void setValidateResponse(boolean validateResponse) Indicates whether client-side incoming responses are to be validated. Defaults totrue. -
setExceptionResolver
Provide anEndpointExceptionResolverfor resolving validation exceptions. -
setSkipValidationIfNoHeaderPresent
public void setSkipValidationIfNoHeaderPresent(boolean skipValidationIfNoHeaderPresent) Allows skipping validation if no security header is present. -
handleRequest
Validates a server-side incoming request. Delegates tovalidateMessage(org.springframework.ws.soap.SoapMessage,org.springframework.ws.context.MessageContext)if thevalidateRequestproperty istrue.- Specified by:
handleRequestin interfaceEndpointInterceptor- Parameters:
messageContext- the message context, containing the request to be validatedendpoint- chosen endpoint to invoke- Returns:
trueif the request was valid;falseotherwise.- Throws:
Exception- in case of errors- See Also:
-
handleResponse
public final boolean handleResponse(MessageContext messageContext, Object endpoint) throws Exception Secures a server-side outgoing response. Delegates tosecureMessage(org.springframework.ws.soap.SoapMessage,org.springframework.ws.context.MessageContext)if thesecureResponseproperty istrue.- Specified by:
handleResponsein interfaceEndpointInterceptor- Parameters:
messageContext- the message context, containing the response to be securedendpoint- chosen endpoint to invoke- Returns:
trueif the response was secured;falseotherwise.- Throws:
Exception- in case of errors- See Also:
-
handleFault
Returnstrue, i.e. fault responses are not secured.- Specified by:
handleFaultin interfaceEndpointInterceptor- Parameters:
messageContext- contains both request and response messages, the response should contains a Faultendpoint- chosen endpoint to invoke- Returns:
trueto continue processing of the response interceptor chain;falseto indicate blocking of the response handler chain.- Throws:
Exception
-
afterCompletion
Description copied from interface:EndpointInterceptorCallback after completion of request and response (fault) processing. Will be called on any outcome of endpoint invocation, thus allows for proper resource cleanup.Note: Will only be called if this interceptor's
EndpointInterceptor.handleRequest(org.springframework.ws.context.MessageContext, java.lang.Object)method has successfully completed.As with the
EndpointInterceptor.handleResponse(org.springframework.ws.context.MessageContext, java.lang.Object)method, the method will be invoked on each interceptor in the chain in reverse order, so the first interceptor will be the last to be invoked.- Specified by:
afterCompletionin interfaceEndpointInterceptor- Parameters:
messageContext- contains both request and response messages, the response should contains a Faultendpoint- chosen endpoint to invokeex- exception thrown on handler execution, if any
-
understands
Description copied from interface:SoapEndpointInterceptorGiven aSoapHeaderElement, return whether or not thisSoapEndpointInterceptorunderstands it.- Specified by:
understandsin interfaceSoapEndpointInterceptor- Parameters:
headerElement- the header- Returns:
trueif understood,falseotherwise
-
handleRequest
Secures a client-side outgoing request. Delegates tosecureMessage(org.springframework.ws.soap.SoapMessage,org.springframework.ws.context.MessageContext)if thesecureRequestproperty istrue.- Specified by:
handleRequestin interfaceClientInterceptor- Parameters:
messageContext- the message context, containing the request to be secured- Returns:
trueif the response was secured;falseotherwise.- Throws:
Exception- in case of errorsWebServiceClientException- in case of errors- See Also:
-
handleResponse
Validates a client-side incoming response. Delegates tovalidateMessage(org.springframework.ws.soap.SoapMessage,org.springframework.ws.context.MessageContext)if thevalidateResponseproperty istrue.- Specified by:
handleResponsein interfaceClientInterceptor- Parameters:
messageContext- the message context, containing the response to be validated- Returns:
trueif the request was valid;falseotherwise.- Throws:
Exception- in case of errorsWebServiceClientException- in case of errors- See Also:
-
handleFault
Returnstrue, i.e. fault responses are not validated.- Specified by:
handleFaultin interfaceClientInterceptor- Parameters:
messageContext- contains the outgoing request message- Returns:
trueto continue processing of the request interceptors;falseto indicate blocking of the request endpoint chain- Throws:
WebServiceClientException- in case of errors- See Also:
-
afterCompletion
public void afterCompletion(MessageContext messageContext, Exception ex) throws WebServiceClientException Description copied from interface:ClientInterceptorCallback after completion of request and response (fault) processing. Will be called on any outcome, thus allows for proper resource cleanup.Note: Will only be called if this interceptor's
ClientInterceptor.handleRequest(org.springframework.ws.context.MessageContext)method has successfully completed.- Specified by:
afterCompletionin interfaceClientInterceptor- Parameters:
messageContext- contains both request and response messages, the response should contains a Faultex- exception thrown on handler execution, if any- Throws:
WebServiceClientException- in case of errors
-
handleSecurementException
protected boolean handleSecurementException(WsSecuritySecurementException ex, MessageContext messageContext) Handles an securement exception. Default implementation logs the given exception, and returnsfalse.- Parameters:
ex- the validation exceptionmessageContext- the message context- Returns:
trueto continue processing the message,false(the default) otherwise
-
handleValidationException
protected boolean handleValidationException(WsSecurityValidationException ex, MessageContext messageContext) Handles an invalid SOAP message. Default implementation logs the given exception, delegates to the setexceptionResolverif any, or creates a SOAP 1.1 Client or SOAP 1.2 Sender Fault with the exception message as fault string, and returnsfalse.- Parameters:
ex- the validation exceptionmessageContext- the message context- Returns:
trueto continue processing the message,false(the default) otherwise
-
handleFaultException
Handles a fault exception.Default implementation logs the given exception, and creates a SOAP Fault with the properties of the given exception, and returnsfalse.- Parameters:
ex- the validation exceptionmessageContext- the message context- Returns:
trueto continue processing the message,false(the default) otherwise
-
validateMessage
protected abstract void validateMessage(SoapMessage soapMessage, MessageContext messageContext) throws WsSecurityValidationException Abstract template method. Subclasses are required to validate the request contained in the givenSoapMessage, and replace the original request with the validated version.- Parameters:
soapMessage- the soap message to validate- Throws:
WsSecurityValidationException- in case of validation errors
-
secureMessage
protected abstract void secureMessage(SoapMessage soapMessage, MessageContext messageContext) throws WsSecuritySecurementException Abstract template method. Subclasses are required to secure the response contained in the givenSoapMessage, and replace the original response with the secured version.- Parameters:
soapMessage- the soap message to secure- Throws:
WsSecuritySecurementException- in case of securement errors
-
cleanUp
protected abstract void cleanUp()
-