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