1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.jetty.jaas.callback;
20
21 import java.io.IOException;
22 import java.util.Arrays;
23 import javax.security.auth.callback.Callback;
24 import javax.security.auth.callback.NameCallback;
25 import javax.security.auth.callback.PasswordCallback;
26 import javax.security.auth.callback.UnsupportedCallbackException;
27
28 import org.eclipse.jetty.server.Request;
29 import org.eclipse.jetty.util.security.Password;
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 public class DefaultCallbackHandler extends AbstractCallbackHandler
51 {
52
53 private Request _request;
54
55 public void setRequest (Request request)
56 {
57 this._request = request;
58 }
59
60 public void handle (Callback[] callbacks)
61 throws IOException, UnsupportedCallbackException
62 {
63 for (int i=0; i < callbacks.length; i++)
64 {
65 if (callbacks[i] instanceof NameCallback)
66 {
67 ((NameCallback)callbacks[i]).setName(getUserName());
68 }
69 else if (callbacks[i] instanceof ObjectCallback)
70 {
71 ((ObjectCallback)callbacks[i]).setObject(getCredential());
72 }
73 else if (callbacks[i] instanceof PasswordCallback)
74 {
75 if (getCredential() instanceof Password)
76 ((PasswordCallback)callbacks[i]).setPassword (((Password)getCredential()).toString().toCharArray());
77 else if (getCredential() instanceof String)
78 {
79 ((PasswordCallback)callbacks[i]).setPassword (((String)getCredential()).toCharArray());
80 }
81 else
82 throw new UnsupportedCallbackException (callbacks[i], "User supplied credentials cannot be converted to char[] for PasswordCallback: try using an ObjectCallback instead");
83 }
84 else if (callbacks[i] instanceof RequestParameterCallback)
85 {
86 RequestParameterCallback callback = (RequestParameterCallback)callbacks[i];
87 callback.setParameterValues(Arrays.asList(_request.getParameterValues(callback.getParameterName())));
88 }
89 else
90 throw new UnsupportedCallbackException(callbacks[i]);
91 }
92
93 }
94
95 }
96