1
2
3
4
5
6
7
8
9
10
11 package org.mule.extras.wssecurity.headers;
12
13 import org.mule.umo.UMOMessage;
14
15 import java.util.Properties;
16
17 import org.apache.ws.security.WSConstants;
18 import org.apache.ws.security.handler.WSHandlerConstants;
19
20 public class WsSecurityHeadersSetter
21 {
22
23
24
25
26
27
28
29 public Properties addSecurityHeaders(UMOMessage message)
30 {
31 Properties props = new Properties();
32 props.setProperty(WSHandlerConstants.ACTION, (String)message
33 .getProperty(WSHandlerConstants.ACTION));
34
35 String passwordType;
36 if (message.getProperty(WSConstants.PW_DIGEST) != null)
37 {
38 passwordType = WSConstants.PW_DIGEST;
39 }
40 else
41 {
42 passwordType = WSConstants.PW_TEXT;
43 }
44 props.setProperty(WSHandlerConstants.PASSWORD_TYPE, passwordType);
45
46 if (message.getProperty(WSHandlerConstants.USER) != null)
47 {
48 props.setProperty(WSHandlerConstants.USER, (String)message
49 .getProperty(WSHandlerConstants.USER));
50 }
51
52 if (message.getProperty(WSHandlerConstants.PW_CALLBACK_CLASS) != null)
53 {
54 props.setProperty(WSHandlerConstants.PW_CALLBACK_CLASS, (String)message
55 .getProperty(WSHandlerConstants.PW_CALLBACK_CLASS));
56 }
57
58 if (message.getProperty(WSHandlerConstants.PASSWORD_TYPE) != null)
59 {
60 props.setProperty(WSHandlerConstants.PASSWORD_TYPE, (String)message
61 .getProperty(WSHandlerConstants.PASSWORD_TYPE));
62 }
63
64 if (message.getProperty(WSHandlerConstants.PW_CALLBACK_REF) != null)
65 {
66 props.setProperty(WSHandlerConstants.PW_CALLBACK_REF, (String)message
67 .getProperty(WSHandlerConstants.PW_CALLBACK_REF));
68 }
69
70 if (message.getProperty(WSHandlerConstants.ACTOR) != null)
71 {
72 props.setProperty(WSHandlerConstants.ACTOR, (String)message
73 .getProperty(WSHandlerConstants.ACTOR));
74 }
75 if (message.getProperty(WSHandlerConstants.MUST_UNDERSTAND) != null)
76 {
77 props.setProperty(WSHandlerConstants.MUST_UNDERSTAND, (String)message
78 .getProperty(WSHandlerConstants.MUST_UNDERSTAND));
79 }
80 if (message.getProperty(WSHandlerConstants.NO_SECURITY) != null)
81 {
82 props.setProperty(WSHandlerConstants.NO_SECURITY, (String)message
83 .getProperty(WSHandlerConstants.NO_SECURITY));
84 }
85 if (message.getProperty(WSHandlerConstants.NO_SERIALIZATION) != null)
86 {
87 props.setProperty(WSHandlerConstants.NO_SERIALIZATION, (String)message
88 .getProperty(WSHandlerConstants.NO_SERIALIZATION));
89 }
90 if (message.getProperty(WSHandlerConstants.ROLE) != null)
91 {
92 props.setProperty(WSHandlerConstants.ROLE, (String)message
93 .getProperty(WSHandlerConstants.ROLE));
94 }
95
96
97 if (message.getProperty(WSHandlerConstants.ACTION)
98 .equals(WSHandlerConstants.USERNAME_TOKEN))
99 {
100 if (message.getProperty(WSHandlerConstants.ADD_UT_ELEMENTS) != null)
101 {
102 props.setProperty(WSHandlerConstants.ADD_UT_ELEMENTS, (String)message
103 .getProperty(WSHandlerConstants.ADD_UT_ELEMENTS));
104 }
105 }
106
107
108 if (message.getProperty(WSHandlerConstants.ACTION)
109 .equals(WSHandlerConstants.TIMESTAMP))
110 {
111 if (message.getProperty(WSHandlerConstants.TIMESTAMP_PRECISION) != null)
112 {
113 props.setProperty(WSHandlerConstants.TIMESTAMP_PRECISION, (String)message
114 .getProperty(WSHandlerConstants.TIMESTAMP_PRECISION));
115 }
116 if (message.getProperty(WSHandlerConstants.TIMESTAMP_STRICT) != null)
117 {
118 props.setProperty(WSHandlerConstants.TIMESTAMP_STRICT, (String)message
119 .getProperty(WSHandlerConstants.TIMESTAMP_STRICT));
120 }
121 if (message.getProperty(WSHandlerConstants.TTL_TIMESTAMP) != null)
122 {
123 props.setProperty(WSHandlerConstants.TTL_TIMESTAMP, (String)message
124 .getProperty(WSHandlerConstants.TTL_TIMESTAMP));
125 }
126 }
127
128
129 if (message.getProperty(WSHandlerConstants.ACTION)
130 .equals(WSHandlerConstants.ENCRYPT))
131 {
132 if (message.getProperty(WSHandlerConstants.ENC_PROP_FILE) != null)
133 {
134 props.setProperty(WSHandlerConstants.ENC_PROP_FILE, (String)message
135 .getProperty(WSHandlerConstants.ENC_PROP_FILE));
136 }
137 if (message.getProperty(WSHandlerConstants.ENC_CALLBACK_CLASS) != null)
138 {
139 props.setProperty(WSHandlerConstants.ENC_CALLBACK_CLASS, (String)message
140 .getProperty(WSHandlerConstants.ENC_CALLBACK_CLASS));
141 }
142 if (message.getProperty(WSHandlerConstants.ENC_CALLBACK_REF) != null)
143 {
144 props.setProperty(WSHandlerConstants.ENC_CALLBACK_REF, (String)message
145 .getProperty(WSHandlerConstants.ENC_CALLBACK_REF));
146 }
147 if (message.getProperty(WSHandlerConstants.ENC_KEY_ID) != null)
148 {
149 props.setProperty(WSHandlerConstants.ENC_KEY_ID, (String)message
150 .getProperty(WSHandlerConstants.ENC_KEY_ID));
151 }
152 if (message.getProperty(WSHandlerConstants.ENC_KEY_NAME) != null)
153 {
154 props.setProperty(WSHandlerConstants.ENC_KEY_NAME, (String)message
155 .getProperty(WSHandlerConstants.ENC_KEY_NAME));
156 }
157 if (message.getProperty(WSHandlerConstants.ENC_KEY_TRANSPORT) != null)
158 {
159 props.setProperty(WSHandlerConstants.ENC_KEY_TRANSPORT, (String)message
160 .getProperty(WSHandlerConstants.ENC_KEY_TRANSPORT));
161 }
162 if (message.getProperty(WSHandlerConstants.ENC_SYM_ALGO) != null)
163 {
164 props.setProperty(WSHandlerConstants.ENC_SYM_ALGO, (String)message
165 .getProperty(WSHandlerConstants.ENC_SYM_ALGO));
166 }
167 if (message.getProperty(WSHandlerConstants.ENCRYPTION_PARTS) != null)
168 {
169 props.setProperty(WSHandlerConstants.ENCRYPTION_PARTS, (String)message
170 .getProperty(WSHandlerConstants.ENCRYPTION_PARTS));
171 }
172
173 if (message.getProperty(WSHandlerConstants.ENCRYPTION_USER) != null)
174 {
175 props.setProperty(WSHandlerConstants.ENCRYPTION_USER, (String)message
176 .getProperty(WSHandlerConstants.ENCRYPTION_USER));
177 }
178
179 if (message.getProperty(WSHandlerConstants.DEC_PROP_FILE) != null)
180 {
181 props.setProperty(WSHandlerConstants.DEC_PROP_FILE, (String)message
182 .getProperty(WSHandlerConstants.DEC_PROP_FILE));
183 }
184 }
185
186
187 if (message.getProperty(WSHandlerConstants.SAML_PROP_FILE) != null)
188 {
189 props.setProperty(WSHandlerConstants.SAML_PROP_FILE, (String)message
190 .getProperty(WSHandlerConstants.SAML_PROP_FILE));
191 }
192
193
194 if (message.getProperty(WSHandlerConstants.ACTION)
195 .equals(WSHandlerConstants.SIGNATURE)
196 || message.getProperty(WSHandlerConstants.ACTION)
197 .equals(WSHandlerConstants.SAML_TOKEN_SIGNED))
198 {
199 if (message.getProperty(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION) != null)
200 {
201 props.setProperty(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION, (String)message
202 .getProperty(WSHandlerConstants.ENABLE_SIGNATURE_CONFIRMATION));
203 }
204
205 if (message.getProperty(WSHandlerConstants.SIG_KEY_ID) != null)
206 {
207 props.setProperty(WSHandlerConstants.SIG_KEY_ID, (String)message
208 .getProperty(WSHandlerConstants.SIG_KEY_ID));
209 }
210
211 if (message.getProperty(WSHandlerConstants.SIG_ALGO) != null)
212 {
213 props.setProperty(WSHandlerConstants.SIG_ALGO, (String)message
214 .getProperty(WSHandlerConstants.SIG_ALGO));
215 }
216
217 if (message.getProperty(WSHandlerConstants.SIG_CONF_DONE) != null)
218 {
219 props.setProperty(WSHandlerConstants.SIG_CONF_DONE, (String)message
220 .getProperty(WSHandlerConstants.SIG_CONF_DONE));
221 }
222
223 if (message.getProperty(WSHandlerConstants.SIG_PROP_FILE) != null)
224 {
225 props.setProperty(WSHandlerConstants.SIG_PROP_FILE, (String)message
226 .getProperty(WSHandlerConstants.SIG_PROP_FILE));
227 }
228 }
229 return props;
230 }
231 }