01: /* Copyright 2001 The JA-SIG Collaborative. All rights reserved.
02: * See license distributed with this file and
03: * available online at http://www.uportal.org/license.html
04: */
05:
06: package org.jasig.portal.security.provider;
07:
08: import java.io.IOException;
09:
10: import javax.security.auth.callback.Callback;
11: import javax.security.auth.callback.CallbackHandler;
12: import javax.security.auth.callback.NameCallback;
13: import javax.security.auth.callback.PasswordCallback;
14: import javax.security.auth.callback.UnsupportedCallbackException;
15:
16: /**
17: * <p>Used by JAAS security provider
18: * checks userid and credentials using JAAS.
19: *
20: * @author Nathan Jacobs
21: *
22: */
23: public class JAASInlineCallbackHandler implements CallbackHandler {
24:
25: private String username = null;
26: private char[] password = null;
27:
28: public JAASInlineCallbackHandler(String username, char[] password) {
29:
30: // make a defensive copy
31: this .password = (char[]) password.clone();
32:
33: if ("".equals(username)) {
34: throw new IllegalArgumentException(
35: "Username must be non-empty");
36: }
37:
38: this .username = username;
39:
40: }
41:
42: public void handle(Callback[] callbacks) throws IOException,
43: UnsupportedCallbackException {
44:
45: for (int i = 0; i < callbacks.length; i++) {
46: if (callbacks[i] instanceof NameCallback) {
47: NameCallback nc = (NameCallback) callbacks[i];
48: nc.setName(username);
49: } else if (callbacks[i] instanceof PasswordCallback) {
50: PasswordCallback pc = (PasswordCallback) callbacks[i];
51: pc.setPassword(password);
52: } else {
53: throw new UnsupportedCallbackException(callbacks[i],
54: "Unrecognized Callback");
55: }
56: }
57: }
58:
59: }
|