Skip to content

Commit 7ae57b5

Browse files
committed
Polishing.
Related: #1300.
1 parent bd7ba3b commit 7ae57b5

File tree

3 files changed

+78
-47
lines changed

3 files changed

+78
-47
lines changed

spring-ws-security/src/main/java/org/springframework/ws/soap/security/wss4j2/Wss4jSecurityInterceptor.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@
136136
* @author Arjen Poutsma
137137
* @author Greg Turnquist
138138
* @author Jamin Hitchcock
139+
* @author Rob Leland
139140
* @see <a href="http://ws.apache.org/wss4j/">Apache WSS4J 2.0</a>
140141
* @since 2.3.0
141142
*/
@@ -406,6 +407,7 @@ public void setSecurementUsername(String securementUsername) {
406407

407408
/** Sets the time to live on the outgoing message */
408409
public void setSecurementTimeToLive(int securementTimeToLive) {
410+
409411
if (securementTimeToLive <= 0) {
410412
throw new IllegalArgumentException("timeToLive must be positive");
411413
}
@@ -430,6 +432,7 @@ public void setSecurementSamlCallbackHandler(CallbackHandler samlCallbackHandler
430432

431433
/** Sets the server-side time to live */
432434
public void setValidationTimeToLive(int validationTimeToLive) {
435+
433436
if (validationTimeToLive <= 0) {
434437
throw new IllegalArgumentException("timeToLive must be positive");
435438
}
@@ -438,6 +441,7 @@ public void setValidationTimeToLive(int validationTimeToLive) {
438441

439442
/** Sets the validation actions to be executed by the interceptor. */
440443
public void setValidationActions(String actions) {
444+
441445
this.validationActions = actions;
442446
try {
443447
validationActionsVector = WSSecurityUtil.decodeAction(actions);
@@ -451,7 +455,7 @@ public void setValidationActor(String validationActor) {
451455
}
452456

453457
/**
454-
* Sets the {@link org.apache.ws.security.WSPasswordCallback} handler to use when validating messages.
458+
* Sets the {@link CallbackHandler} to use when validating messages.
455459
*
456460
* @see #setValidationCallbackHandlers(CallbackHandler[])
457461
*/
@@ -460,7 +464,7 @@ public void setValidationCallbackHandler(CallbackHandler callbackHandler) {
460464
}
461465

462466
/**
463-
* Sets the {@link org.apache.ws.security.WSPasswordCallback} handlers to use when validating messages.
467+
* Sets the {@link CallbackHandler}s to use when validating messages.
464468
*
465469
* @see #setValidationCallbackHandler(CallbackHandler)
466470
*/
@@ -480,6 +484,7 @@ public void setValidationSignatureCrypto(Crypto signatureCrypto) {
480484

481485
/** Whether to enable signatureConfirmation or not. By default signatureConfirmation is enabled */
482486
public void setEnableSignatureConfirmation(boolean enableSignatureConfirmation) {
487+
483488
handler.setOption(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION, enableSignatureConfirmation);
484489
this.enableSignatureConfirmation = enableSignatureConfirmation;
485490
}
@@ -523,6 +528,7 @@ public void setSecurementUsernameTokenCreated(boolean securementUsernameTokenCre
523528
* @param config web service security configuration or {@code null} to use default settings
524529
*/
525530
public void setWssConfig(WSSConfig config) {
531+
526532
securityEngine.setWssConfig(config);
527533
wssConfig = config;
528534
}
@@ -538,15 +544,17 @@ public void setEnableRevocation(boolean enableRevocation) {
538544
* Set the WS-I Basic Security Profile compliance mode. Default is {@code true}.
539545
*/
540546
public void setBspCompliant(boolean bspCompliant) {
547+
541548
this.handler.setOption(WSHandlerConstants.IS_BSP_COMPLIANT, bspCompliant);
542549
this.bspCompliant = bspCompliant;
543550
}
544551

545552
/**
546-
* Sets whether to add an InclusiveNamespaces PrefixList as a CanonicalizationMethod child
547-
* when generating Signatures using WSConstants.C14N_EXCL_OMIT_COMMENTS. Default is {@code true}.
553+
* Sets whether to add an InclusiveNamespaces PrefixList as a CanonicalizationMethod child when generating Signatures
554+
* using WSConstants.C14N_EXCL_OMIT_COMMENTS. Default is {@code true}.
548555
*/
549556
public void setAddInclusivePrefixes(boolean addInclusivePrefixes) {
557+
550558
this.handler.setOption(WSHandlerConstants.ADD_INCLUSIVE_PREFIXES, addInclusivePrefixes);
551559
this.addInclusivePrefixes = addInclusivePrefixes;
552560
}
@@ -563,6 +571,7 @@ public void setAllowRSA15KeyTransportAlgorithm(boolean allow) {
563571
* is 60 seconds.
564572
*/
565573
public void setFutureTimeToLive(int futureTimeToLive) {
574+
566575
if (futureTimeToLive <= 0) {
567576
throw new IllegalArgumentException("futureTimeToLive must be positive");
568577
}
@@ -579,6 +588,7 @@ public void setRemoveSecurityHeader(boolean removeSecurityHeader) {
579588

580589
@Override
581590
public void afterPropertiesSet() throws Exception {
591+
582592
Assert.isTrue(validationActions != null || securementActions != null,
583593
"validationActions or securementActions are required");
584594
if (validationActions != null) {
@@ -592,7 +602,6 @@ public void afterPropertiesSet() throws Exception {
592602
}
593603
// securement actions are not to be validated at start up as they could
594604
// be configured dynamically via the message context
595-
596605
}
597606

598607
@Override
@@ -631,6 +640,7 @@ protected void secureMessage(SoapMessage soapMessage, MessageContext messageCont
631640
* @return the request data
632641
*/
633642
protected RequestData initializeRequestData(MessageContext messageContext) {
643+
634644
RequestData requestData = new RequestData();
635645
requestData.setMsgContext(messageContext);
636646

@@ -667,6 +677,7 @@ protected RequestData initializeRequestData(MessageContext messageContext) {
667677
* @return the request data
668678
*/
669679
protected RequestData initializeValidationRequestData(MessageContext messageContext) {
680+
670681
RequestData requestData = new RequestData();
671682
requestData.setMsgContext(messageContext);
672683

@@ -696,6 +707,7 @@ protected RequestData initializeValidationRequestData(MessageContext messageCont
696707
@Override
697708
protected void validateMessage(SoapMessage soapMessage, MessageContext messageContext)
698709
throws WsSecurityValidationException {
710+
699711
if (logger.isDebugEnabled()) {
700712
logger.debug("Validating message [" + soapMessage + "] with actions [" + validationActions + "]");
701713
}
@@ -756,6 +768,7 @@ protected void validateMessage(SoapMessage soapMessage, MessageContext messageCo
756768
*/
757769
protected void checkResults(List<WSSecurityEngineResult> results, List<Integer> validationActions)
758770
throws Wss4jSecurityValidationException {
771+
759772
if (!handler.checkReceiverResultsAnyOrder(results, validationActions)) {
760773
throw new Wss4jSecurityValidationException("Security processing failed (actions mismatch)");
761774
}
@@ -767,6 +780,7 @@ protected void checkResults(List<WSSecurityEngineResult> results, List<Integer>
767780
*/
768781
@SuppressWarnings("unchecked")
769782
private void updateContextWithResults(MessageContext messageContext, List<WSSecurityEngineResult> results) {
783+
770784
List<WSHandlerResult> handlerResults;
771785
if ((handlerResults = (List<WSHandlerResult>) messageContext
772786
.getProperty(WSHandlerConstants.RECV_RESULTS)) == null) {
@@ -785,6 +799,7 @@ private void updateContextWithResults(MessageContext messageContext, List<WSSecu
785799
* @param result
786800
*/
787801
protected void verifyCertificateTrust(WSHandlerResult result) throws WSSecurityException {
802+
788803
List<WSSecurityEngineResult> results = result.getActionResults().get(WSConstants.SIGN);
789804

790805
if (!CollectionUtils.isEmpty(results)) {
@@ -808,6 +823,7 @@ protected void verifyCertificateTrust(WSHandlerResult result) throws WSSecurityE
808823
* @param result
809824
*/
810825
protected void verifyTimestamp(WSHandlerResult result) throws WSSecurityException {
826+
811827
List<WSSecurityEngineResult> results = result.getActionResults().get(WSConstants.TS);
812828

813829
if (!CollectionUtils.isEmpty(results)) {
@@ -830,6 +846,7 @@ protected void verifyTimestamp(WSHandlerResult result) throws WSSecurityExceptio
830846
}
831847

832848
private void processPrincipal(WSHandlerResult result) {
849+
833850
List<WSSecurityEngineResult> results = result.getActionResults().get(WSConstants.UT);
834851

835852
if (!CollectionUtils.isEmpty(results)) {
@@ -851,6 +868,7 @@ private void processPrincipal(WSHandlerResult result) {
851868

852869
@Override
853870
protected void cleanUp() {
871+
854872
if (validationCallbackHandler != null) {
855873
try {
856874
CleanupCallback cleanupCallback = new CleanupCallback();

spring-ws-security/src/test/java/org/springframework/ws/soap/security/wss4j2/SaajWss4jMessageInterceptorSignTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,8 @@ public void testSignWithoutInclusivePrefixesAndValidate() throws Exception {
9797
SOAPMessage saajMessage = saajSoap11MessageFactory.createMessage();
9898
transformer.transform(new StringSource(PAYLOAD), new DOMResult(saajMessage.getSOAPBody()));
9999
SoapMessage message = new SaajSoapMessage(saajMessage, saajSoap11MessageFactory);
100-
MessageContext messageContext = new DefaultMessageContext(message, new SaajSoapMessageFactory(saajSoap11MessageFactory));
100+
MessageContext messageContext = new DefaultMessageContext(message,
101+
new SaajSoapMessageFactory(saajSoap11MessageFactory));
101102

102103
interceptor.secureMessage(message, messageContext);
103104

spring-ws-security/src/test/java/org/springframework/ws/soap/security/wss4j2/SaajWss4jSecurityInterceptorDefaultsTest.java

Lines changed: 53 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@
1616

1717
package org.springframework.ws.soap.security.wss4j2;
1818

19+
import static org.junit.jupiter.api.Assertions.assertFalse;
20+
import static org.junit.jupiter.api.Assertions.assertTrue;
21+
import static org.springframework.test.util.AssertionErrors.assertEquals;
22+
23+
import jakarta.xml.soap.SOAPException;
24+
import jakarta.xml.soap.SOAPMessage;
25+
26+
import javax.xml.transform.Transformer;
27+
import javax.xml.transform.TransformerException;
28+
import javax.xml.transform.dom.DOMResult;
29+
1930
import org.apache.wss4j.dom.handler.RequestData;
2031
import org.junit.jupiter.api.Test;
2132
import org.springframework.test.util.ReflectionTestUtils;
@@ -27,57 +38,58 @@
2738
import org.springframework.xml.transform.StringSource;
2839
import org.springframework.xml.transform.TransformerFactoryUtils;
2940

30-
import jakarta.xml.soap.SOAPException;
31-
import jakarta.xml.soap.SOAPMessage;
32-
import javax.xml.transform.Transformer;
33-
import javax.xml.transform.TransformerException;
34-
import javax.xml.transform.dom.DOMResult;
41+
public class SaajWss4jSecurityInterceptorDefaultsTest extends Wss4jTestCase {
3542

36-
import static org.junit.jupiter.api.Assertions.assertFalse;
37-
import static org.junit.jupiter.api.Assertions.assertTrue;
38-
import static org.springframework.test.util.AssertionErrors.assertEquals;
43+
private static final String PAYLOAD = "<tru:StockSymbol xmlns:tru=\"http://fabrikam123.com/payloads\">QQQ</tru:StockSymbol>";
3944

40-
public class SaajWss4jSecurityInterceptorDefaultsTest extends Wss4jTestCase {
45+
@Test
46+
public void testThatTheDefaultValueForAddInclusivePrefixesMatchesWss4JDefaultValue() {
47+
48+
Wss4jSecurityInterceptor subject = new Wss4jSecurityInterceptor();
49+
RequestData requestData = new RequestData();
50+
Boolean springDefault = (Boolean) ReflectionTestUtils.getField(subject, Wss4jSecurityInterceptor.class,
51+
"addInclusivePrefixes");
52+
assertEquals("Spring-ws default for addInclusivePrefixes matches Wss4j default",
53+
requestData.isAddInclusivePrefixes(), springDefault);
54+
}
4155

42-
private static final String PAYLOAD = "<tru:StockSymbol xmlns:tru=\"http://fabrikam123.com/payloads\">QQQ</tru:StockSymbol>";
56+
@Test
57+
public void testThatInitializeValidationRequestDataSetsInclusivePrefixesUsingDefaults()
58+
throws TransformerException, SOAPException {
4359

44-
@Test
45-
public void testThatTheDefaultValueForAddInclusivePrefixesMatchesWss4JDefaultValue() {
46-
Wss4jSecurityInterceptor subject = new Wss4jSecurityInterceptor();
47-
RequestData requestData = new RequestData();
48-
Boolean springDefault = (Boolean) ReflectionTestUtils.getField(subject, Wss4jSecurityInterceptor.class, "addInclusivePrefixes");
49-
assertEquals("Spring-ws default for addInclusivePrefixes matches Wss4j default", requestData.isAddInclusivePrefixes(), springDefault);
50-
}
60+
Wss4jSecurityInterceptor subject = new Wss4jSecurityInterceptor();
5161

52-
@Test
53-
public void testThatInitializeValidationRequestDataSetsInclusivePrefixesUsingDefaults() throws TransformerException, SOAPException {
54-
Wss4jSecurityInterceptor subject = new Wss4jSecurityInterceptor();
62+
Transformer transformer = TransformerFactoryUtils.newInstance().newTransformer();
5563

56-
Transformer transformer = TransformerFactoryUtils.newInstance().newTransformer();
64+
SOAPMessage saajMessage = saajSoap11MessageFactory.createMessage();
65+
transformer.transform(new StringSource(PAYLOAD), new DOMResult(saajMessage.getSOAPBody()));
66+
SoapMessage message = new SaajSoapMessage(saajMessage, saajSoap11MessageFactory);
67+
MessageContext messageContext = new DefaultMessageContext(message,
68+
new SaajSoapMessageFactory(saajSoap11MessageFactory));
5769

58-
SOAPMessage saajMessage = saajSoap11MessageFactory.createMessage();
59-
transformer.transform(new StringSource(PAYLOAD), new DOMResult(saajMessage.getSOAPBody()));
60-
SoapMessage message = new SaajSoapMessage(saajMessage, saajSoap11MessageFactory);
61-
MessageContext messageContext = new DefaultMessageContext(message, new SaajSoapMessageFactory(saajSoap11MessageFactory));
70+
RequestData validationData = ReflectionTestUtils.invokeMethod(subject, "initializeValidationRequestData",
71+
messageContext);
6272

63-
RequestData validationData = ReflectionTestUtils.invokeMethod(subject, "initializeValidationRequestData", messageContext);
73+
assertTrue(validationData.isAddInclusivePrefixes());
74+
}
6475

65-
assertTrue(validationData.isAddInclusivePrefixes());
66-
}
76+
@Test
77+
public void testThatInitializeValidationRequestDataSetsInclusivePrefixesUsingNotUsingInclusivePrefixes()
78+
throws TransformerException, SOAPException {
6779

68-
@Test
69-
public void testThatInitializeValidationRequestDataSetsInclusivePrefixesUsingNotUsingInclusivePrefixes() throws TransformerException, SOAPException {
70-
Wss4jSecurityInterceptor subject = new Wss4jSecurityInterceptor();
71-
subject.setAddInclusivePrefixes(false);
72-
Transformer transformer = TransformerFactoryUtils.newInstance().newTransformer();
80+
Wss4jSecurityInterceptor subject = new Wss4jSecurityInterceptor();
81+
subject.setAddInclusivePrefixes(false);
82+
Transformer transformer = TransformerFactoryUtils.newInstance().newTransformer();
7383

74-
SOAPMessage saajMessage = saajSoap11MessageFactory.createMessage();
75-
transformer.transform(new StringSource(PAYLOAD), new DOMResult(saajMessage.getSOAPBody()));
76-
SoapMessage message = new SaajSoapMessage(saajMessage, saajSoap11MessageFactory);
77-
MessageContext messageContext = new DefaultMessageContext(message, new SaajSoapMessageFactory(saajSoap11MessageFactory));
84+
SOAPMessage saajMessage = saajSoap11MessageFactory.createMessage();
85+
transformer.transform(new StringSource(PAYLOAD), new DOMResult(saajMessage.getSOAPBody()));
86+
SoapMessage message = new SaajSoapMessage(saajMessage, saajSoap11MessageFactory);
87+
MessageContext messageContext = new DefaultMessageContext(message,
88+
new SaajSoapMessageFactory(saajSoap11MessageFactory));
7889

79-
RequestData validationData = ReflectionTestUtils.invokeMethod(subject, "initializeValidationRequestData", messageContext);
90+
RequestData validationData = ReflectionTestUtils.invokeMethod(subject, "initializeValidationRequestData",
91+
messageContext);
8092

81-
assertFalse(validationData.isAddInclusivePrefixes());
82-
}
83-
}
93+
assertFalse(validationData.isAddInclusivePrefixes());
94+
}
95+
}

0 commit comments

Comments
 (0)