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.common;
21
22 import java.io.IOException;
23
24 import javax.security.auth.callback.Callback;
25 import javax.security.auth.callback.CallbackHandler;
26 import javax.security.auth.callback.UnsupportedCallbackException;
27
28 import org.apache.wss4j.common.ext.WSPasswordCallback;
29
30
31
32
33
34 public class CombinedCallbackHandler implements CallbackHandler {
35
36 private final CallbackHandler secretCallbackHandler;
37 private final CallbackHandler keystoreCallbackHandler;
38
39 public CombinedCallbackHandler(
40 CallbackHandler secretCallbackHandler, CallbackHandler keystoreCallbackHandler
41 ) {
42 this.secretCallbackHandler = secretCallbackHandler;
43 this.keystoreCallbackHandler = keystoreCallbackHandler;
44 }
45
46 public void handle(Callback[] callbacks)
47 throws IOException, UnsupportedCallbackException {
48 for (Callback callback : callbacks) {
49 if (callback instanceof WSPasswordCallback) {
50 WSPasswordCallback pc = (WSPasswordCallback) callback;
51 if (pc.getUsage() == WSPasswordCallback.SECRET_KEY
52 || pc.getUsage() == WSPasswordCallback.SECURITY_CONTEXT_TOKEN) {
53 secretCallbackHandler.handle(callbacks);
54 } else {
55 keystoreCallbackHandler.handle(callbacks);
56 }
57 } else {
58 throw new UnsupportedCallbackException(callback, "Unrecognized Callback");
59 }
60 }
61 }
62 }