1 package no.feide.mellon.jaas.callbackhandlers; 2 3 4 import java.io.*; 5 6 import javax.security.auth.callback.*; 7 8 /*** 9 * ConsoleCallbackHandler prompts and reads from the 10 * command line for username and password. 11 * 12 * @author Rikke Amilde Løvlid 13 * 14 */ 15 16 public class CommandlineCallbackHandler implements CallbackHandler { 17 18 public CommandlineCallbackHandler() { 19 } 20 21 /*** 22 * Handles the specified set of callbacks. 23 * This class supports NameCallback and PasswordCallback. 24 * 25 * @param callbacks the callbacks to handle 26 * @throws IOException if an input or output error occurs. 27 * @throws UnsupportedCallbackException if the callback is not an 28 * instance of NameCallback or PasswordCallback 29 */ 30 public void handle(Callback[] callbacks) throws java.io.IOException, UnsupportedCallbackException { 31 32 for (int i = 0; i < callbacks.length; i++) { 33 34 if (callbacks[i] instanceof NameCallback) { 35 NameCallback nc = (NameCallback)callbacks[i]; 36 37 System.out.print("\t\t" +nc.getPrompt()); 38 String name=(new BufferedReader(new InputStreamReader(System.in))).readLine(); 39 nc.setName(name); 40 } 41 else if (callbacks[i] instanceof PasswordCallback) { 42 PasswordCallback pc = (PasswordCallback)callbacks[i]; 43 44 System.out.print("\t\t" + pc.getPrompt()); 45 String password=(new BufferedReader(new InputStreamReader(System.in))).readLine(); 46 pc.setPassword(password.toCharArray()); 47 } 48 else { 49 throw(new UnsupportedCallbackException(callbacks[i], "Callback class not supported")); 50 } 51 } 52 } 53 }