1
2
3
4
5
6
7
8
9
10
11 package org.mule.extras.jaas;
12
13 import org.mule.umo.security.UMOAuthentication;
14
15 import java.io.IOException;
16
17 import javax.security.auth.callback.Callback;
18 import javax.security.auth.callback.CallbackHandler;
19 import javax.security.auth.callback.NameCallback;
20 import javax.security.auth.callback.PasswordCallback;
21 import javax.security.auth.callback.UnsupportedCallbackException;
22
23
24
25
26 public class MuleCallbackHandler implements CallbackHandler
27 {
28 private UMOAuthentication authentication;
29 private String username;
30 private String password;
31
32
33
34
35 public MuleCallbackHandler(UMOAuthentication authentication)
36 {
37 this.authentication = authentication;
38 this.username = (String)this.authentication.getPrincipal();
39 this.password = (String)this.authentication.getCredentials();
40 }
41
42
43
44
45
46
47
48
49
50
51 public final void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException
52 {
53 for (int i = 0; i < callbacks.length; i++)
54 {
55 if (callbacks[i] instanceof NameCallback)
56 {
57 NameCallback nameCb = (NameCallback)callbacks[i];
58 nameCb.setName(username);
59 }
60 else if (callbacks[i] instanceof PasswordCallback)
61 {
62 PasswordCallback passCb = (PasswordCallback)callbacks[i];
63 passCb.setPassword(password.toCharArray());
64 }
65 else
66 {
67 throw (new UnsupportedCallbackException(callbacks[i], "Callback class not supported"));
68 }
69 }
70 }
71 }