package org.jboss.security.auth.callback;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.NameCallback;
import javax.security.auth.callback.PasswordCallback;
import javax.security.auth.callback.UnsupportedCallbackException;
public class ConsoleInputHandler implements CallbackHandler
{
public void handle(Callback[] callbacks) throws
UnsupportedCallbackException
{
for (int i = 0; i < callbacks.length; i++)
{
Callback c = callbacks[i];
if (c instanceof NameCallback)
{
NameCallback nc = (NameCallback) c;
String prompt = nc.getPrompt();
if( prompt == null )
prompt = "Enter Username: ";
System.out.print(prompt);
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try
{
String username = br.readLine();
nc.setName(username);
}
catch(IOException e)
{
throw new SecurityException("Failed to obtain username, ioe="+e.getMessage());
}
}
else if (c instanceof PasswordCallback)
{
PasswordCallback pc = (PasswordCallback) c;
String prompt = pc.getPrompt();
if( prompt == null )
prompt = "Enter Password: ";
System.out.print(prompt);
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try
{
String password = br.readLine();
pc.setPassword(password.toCharArray());
}
catch(IOException e)
{
throw new SecurityException("Failed to obtain password, ioe="+e.getMessage());
}
}
else
{
throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
}
}
}
}