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