1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.ws.security.processor;
21
22 import org.apache.ws.security.WSConstants;
23 import org.apache.ws.security.WSDocInfo;
24 import org.apache.ws.security.WSSecurityEngineResult;
25 import org.apache.ws.security.WSSecurityException;
26 import org.apache.ws.security.handler.RequestData;
27 import org.apache.ws.security.message.token.SignatureConfirmation;
28 import org.w3c.dom.Element;
29
30 import java.util.List;
31
32 public class SignatureConfirmationProcessor implements Processor {
33 private static org.apache.commons.logging.Log log =
34 org.apache.commons.logging.LogFactory.getLog(SignatureConfirmationProcessor.class);
35
36 public List<WSSecurityEngineResult> handleToken(
37 Element elem,
38 RequestData data,
39 WSDocInfo wsDocInfo
40 ) throws WSSecurityException {
41 if (log.isDebugEnabled()) {
42 log.debug("Found SignatureConfirmation list element");
43 }
44
45
46
47 SignatureConfirmation sigConf = new SignatureConfirmation(elem);
48 String id = sigConf.getID();
49
50 if (data.getWssConfig().isWsiBSPCompliant() && (id == null || "".equals(id))) {
51 throw new WSSecurityException(
52 WSSecurityException.INVALID_SECURITY,
53 "requiredElementNoID",
54 new Object[] {elem.getLocalName()}
55 );
56 }
57
58 WSSecurityEngineResult result =
59 new WSSecurityEngineResult(WSConstants.SC, sigConf);
60 result.put(WSSecurityEngineResult.TAG_ID, id);
61 wsDocInfo.addResult(result);
62 wsDocInfo.addTokenElement(elem);
63 return java.util.Collections.singletonList(result);
64 }
65
66 }