View Javadoc

1   /*
2    * $Id: WsSecurityHeadersSetter.java 7976 2007-08-21 14:26:13Z dirk.olmes $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
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       * This method searches for ws-security properties in the message received and
24       * returns these properties
25       * 
26       * @param message
27       * @return
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          // if username token
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         // if timestamp
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         // if encrypted
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         // Saml
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         // if signed
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 }