1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.wss4j.dom.handler;
21
22 import java.util.Collections;
23
24 import org.apache.wss4j.common.util.SOAPUtil;
25 import org.apache.wss4j.dom.WSConstants;
26 import org.apache.wss4j.dom.common.CustomHandler;
27
28 import org.apache.wss4j.dom.common.UsernamePasswordCallbackHandler;
29 import org.apache.wss4j.dom.engine.WSSConfig;
30
31 import org.junit.jupiter.api.Test;
32 import org.apache.wss4j.common.util.XMLUtils;
33 import org.w3c.dom.Document;
34
35 import javax.security.auth.callback.CallbackHandler;
36
37 import static org.junit.jupiter.api.Assertions.assertTrue;
38
39
40
41
42
43
44 public class CallbackRefTest {
45 private static final org.slf4j.Logger LOG =
46 org.slf4j.LoggerFactory.getLogger(CallbackRefTest.class);
47 private CallbackHandler callbackHandler = new UsernamePasswordCallbackHandler();
48
49
50
51
52
53 @Test
54 public void
55 testMessageContextRef() throws Exception {
56
57 final WSSConfig cfg = WSSConfig.getNewInstance();
58 final RequestData reqData = new RequestData();
59 reqData.setWssConfig(cfg);
60 reqData.setUsername("alice");
61 reqData.setPwType(WSConstants.PASSWORD_TEXT);
62 java.util.Map<String, Object> messageContext = new java.util.TreeMap<>();
63 messageContext.put(
64 WSHandlerConstants.PW_CALLBACK_REF,
65 callbackHandler
66 );
67 reqData.setMsgContext(messageContext);
68
69 final java.util.List<Integer> actions = new java.util.ArrayList<>();
70 actions.add(WSConstants.UT);
71 Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
72 CustomHandler handler = new CustomHandler();
73 HandlerAction action = new HandlerAction(WSConstants.UT);
74 handler.send(
75 doc,
76 reqData,
77 Collections.singletonList(action),
78 true
79 );
80
81 String outputString =
82 XMLUtils.prettyDocumentToString(doc);
83 if (LOG.isDebugEnabled()) {
84 LOG.debug(outputString);
85 }
86 assertTrue(outputString.contains("alice"));
87 assertTrue(outputString.contains("securityPassword"));
88 }
89
90
91
92
93
94 @Test
95 public void
96 testHandlerOptionRef() throws Exception {
97
98 final WSSConfig cfg = WSSConfig.getNewInstance();
99 final RequestData reqData = new RequestData();
100 reqData.setWssConfig(cfg);
101 reqData.setUsername("alice");
102 reqData.setPwType(WSConstants.PASSWORD_TEXT);
103 reqData.setMsgContext(new java.util.TreeMap<String, String>());
104
105 final java.util.List<Integer> actions = new java.util.ArrayList<>();
106 actions.add(WSConstants.UT);
107 Document doc = SOAPUtil.toSOAPPart(SOAPUtil.SAMPLE_SOAP_MSG);
108 CustomHandler handler = new CustomHandler();
109 handler.setOption(WSHandlerConstants.PW_CALLBACK_REF, callbackHandler);
110 HandlerAction action = new HandlerAction(WSConstants.UT);
111 handler.send(
112 doc,
113 reqData,
114 Collections.singletonList(action),
115 true
116 );
117
118 String outputString =
119 XMLUtils.prettyDocumentToString(doc);
120 if (LOG.isDebugEnabled()) {
121 LOG.debug(outputString);
122 }
123 assertTrue(outputString.contains("alice"));
124 assertTrue(outputString.contains("securityPassword"));
125 }
126
127 }