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