01: /*
02: jGuard is a security framework based on top of jaas (java authentication and authorization security).
03: it is written for web applications, to resolve simply, access control problems.
04: version $Name: $
05: http://sourceforge.net/projects/jguard/
06:
07: Copyright (C) 2004 Charles GAY
08:
09: This library is free software; you can redistribute it and/or
10: modify it under the terms of the GNU Lesser General Public
11: License as published by the Free Software Foundation; either
12: version 2.1 of the License, or (at your option) any later version.
13:
14: This library is distributed in the hope that it will be useful,
15: but WITHOUT ANY WARRANTY; without even the implied warranty of
16: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17: Lesser General Public License for more details.
18:
19: You should have received a copy of the GNU Lesser General Public
20: License along with this library; if not, write to the Free Software
21: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22:
23:
24: jGuard project home page:
25: http://sourceforge.net/projects/jguard/
26:
27: */
28: package net.sf.jguard.ext.authentication.callbacks;
29:
30: import java.io.IOException;
31:
32: import javax.security.auth.callback.Callback;
33: import javax.security.auth.callback.CallbackHandler;
34: import javax.security.auth.callback.NameCallback;
35: import javax.security.auth.callback.PasswordCallback;
36: import javax.security.auth.callback.UnsupportedCallbackException;
37:
38: /**
39: * @author <a href="mailto:diabolo512@users.sourceforge.net ">Charles Gay</a>
40: * @author <a href="mailto:vberetti@users.sourceforge.net">Vincent Beretti</a>
41: */
42: public class JMXCallbackHandler implements CallbackHandler {
43:
44: private String[] credentials = null;
45:
46: public JMXCallbackHandler(Object credentials) {
47: this .credentials = (String[]) credentials;
48: }
49:
50: public void handle(Callback[] callbacks) throws IOException,
51: UnsupportedCallbackException {
52: for (int i = 0; i < callbacks.length; i++) {
53: Callback c = callbacks[i];
54: if (c instanceof NameCallback) {
55: ((NameCallback) c).setName(credentials[0]);
56: } else if (c instanceof PasswordCallback) {
57: ((PasswordCallback) c).setPassword((credentials[1])
58: .toCharArray());
59: } else if (c instanceof JCaptchaCallback) {
60: JCaptchaCallback jc = (JCaptchaCallback) c;
61: //we skip JCaptcha because we cannot provide
62: //CAPTCHA challenge through JMX
63: jc.setSkipJCaptchaChallenge(true);
64: }
65: }
66: }
67: }
|