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
24 import javax.security.auth.callback.Callback;
25 import javax.security.auth.callback.NameCallback;
26 import javax.security.auth.callback.PasswordCallback;
27 import javax.security.auth.callback.UnsupportedCallbackException;
28
29 import org.eclipse.jetty.server.Request;
30 import org.eclipse.jetty.util.security.Password;
31
32
33
34
35 public class DefaultCallbackHandler extends AbstractCallbackHandler
36 {
37 private Request _request;
38
39 public void setRequest (Request request)
40 {
41 this._request = request;
42 }
43
44 public void handle (Callback[] callbacks)
45 throws IOException, UnsupportedCallbackException
46 {
47 for (int i=0; i < callbacks.length; i++)
48 {
49 if (callbacks[i] instanceof NameCallback)
50 {
51 ((NameCallback)callbacks[i]).setName(getUserName());
52 }
53 else if (callbacks[i] instanceof ObjectCallback)
54 {
55 ((ObjectCallback)callbacks[i]).setObject(getCredential());
56 }
57 else if (callbacks[i] instanceof PasswordCallback)
58 {
59 if (getCredential() instanceof Password)
60 ((PasswordCallback)callbacks[i]).setPassword (((Password)getCredential()).toString().toCharArray());
61 else if (getCredential() instanceof String)
62 {
63 ((PasswordCallback)callbacks[i]).setPassword (((String)getCredential()).toCharArray());
64 }
65 else
66 throw new UnsupportedCallbackException (callbacks[i], "User supplied credentials cannot be converted to char[] for PasswordCallback: try using an ObjectCallback instead");
67 }
68 else if (callbacks[i] instanceof RequestParameterCallback)
69 {
70 RequestParameterCallback callback = (RequestParameterCallback)callbacks[i];
71 callback.setParameterValues(Arrays.asList(_request.getParameterValues(callback.getParameterName())));
72 }
73 else
74 throw new UnsupportedCallbackException(callbacks[i]);
75 }
76
77 }
78
79 }
80