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 javax.security.auth.callback.Callback;
23 import javax.security.auth.callback.CallbackHandler;
24 import javax.security.auth.callback.UnsupportedCallbackException;
25
26 import org.apache.wss4j.common.ext.WSPasswordCallback;
27
28 import java.io.IOException;
29 import java.util.HashMap;
30 import java.util.Map;
31
32
33
34
35
36 public class KeystoreCallbackHandler implements CallbackHandler {
37
38 private final Map<String, String> users = new HashMap<>();
39
40 public KeystoreCallbackHandler() {
41 users.put("wss86", "security");
42 users.put("wss40", "security");
43 users.put("wss40rev", "security");
44 users.put("16c73ab6-b892-458f-abf5-2f875f74882e", "security");
45 users.put("regexp", "security");
46 users.put("x448", "security");
47 users.put("x25519", "security");
48 users.put("secp256r1", "security");
49 users.put("secp384r1", "security");
50 users.put("secp521r1", "security");
51 }
52
53 public void handle(Callback[] callbacks)
54 throws IOException, UnsupportedCallbackException {
55 for (Callback callback : callbacks) {
56 if (callback instanceof WSPasswordCallback) {
57 WSPasswordCallback pc = (WSPasswordCallback) callback;
58 if (users.containsKey(pc.getIdentifier())) {
59 pc.setPassword(users.get(pc.getIdentifier()));
60 } else if (WSPasswordCallback.PASSWORD_ENCRYPTOR_PASSWORD == pc.getUsage()) {
61 pc.setPassword("this-is-a-secret");
62 }
63 } else {
64 throw new UnsupportedCallbackException(callback, "Unrecognized Callback");
65 }
66 }
67 }
68 }