com.sun.faban.harness.webclient
Class Authenticator

java.lang.Object
  extended by com.sun.faban.harness.webclient.Authenticator
All Implemented Interfaces:
CallbackHandler

public class Authenticator
extends Object
implements CallbackHandler

The authenticator handles authentications for the web interface.


Constructor Summary
Authenticator()
           
 
Method Summary
 String getLogin()
          Returns the login id.
 String getMessage()
          Returns the message.
 Subject getSubject()
          Return subject of the logged in user.
 void handle(Callback[] callbacks)
           Retrieve or display the information requested in the provided Callbacks.
 Subject login(String id, String passwd)
          Returns the Subject if logged in successfully.
 void logout()
          This method is responsible for logging out a user.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Authenticator

public Authenticator()
Method Detail

login

public Subject login(String id,
                     String passwd)
              throws LoginException
Returns the Subject if logged in successfully.

Parameters:
id -
passwd -
Returns:
Subject
Throws:
LoginException

logout

public void logout()
            throws LoginException
This method is responsible for logging out a user.

Throws:
LoginException

getLogin

public String getLogin()
Returns the login id.

Returns:
id as string.

getSubject

public Subject getSubject()
Return subject of the logged in user.

Returns:
Subject

getMessage

public String getMessage()
Returns the message.

Returns:
string message.

handle

public void handle(Callback[] callbacks)
            throws IOException,
                   UnsupportedCallbackException

Retrieve or display the information requested in the provided Callbacks.

The handle method implementation checks the instance(s) of the Callback object(s) passed in to retrieve or display the requested information. The following example is provided to help demonstrate what an handle method implementation might look like. This example code is for guidance only. Many details, including proper error handling, are left out for simplicity.

 public void handle(Callback[] callbacks)
 throws IOException, UnsupportedCallbackException {
 

for (int i = 0; i < callbacks.length; i++) { if (callbacks[i] instanceof TextOutputCallback) {

// display the message according to the specified type TextOutputCallback toc = (TextOutputCallback)callbacks[i]; switch (toc.getMessageType()) { case TextOutputCallback.INFORMATION: System.out.println(toc.getMessage()); break; case TextOutputCallback.ERROR: System.out.println("ERROR: " + toc.getMessage()); break; case TextOutputCallback.WARNING: System.out.println("WARNING: " + toc.getMessage()); break; default: throw new IOException("Unsupported message type: " + toc.getMessageType()); }

} else if (callbacks[i] instanceof NameCallback) {

// prompt the user for a username NameCallback nc = (NameCallback)callbacks[i];

// ignore the provided defaultName System.err.print(nc.getPrompt()); System.err.flush(); nc.setName((new BufferedReader (new InputStreamReader(System.in))).readLine());

} else if (callbacks[i] instanceof PasswordCallback) {

// prompt the user for sensitive information PasswordCallback pc = (PasswordCallback)callbacks[i]; System.err.print(pc.getPrompt()); System.err.flush(); pc.setPassword(readPassword(System.in));

} else { throw new UnsupportedCallbackException (callbacks[i], "Unrecognized Callback"); } } }

// Reads user password from given input stream. private char[] readPassword(InputStream in) throws IOException { // insert code to read a user password from the input stream }

Specified by:
handle in interface CallbackHandler
Parameters:
callbacks - an array of Callback objects provided by an underlying security service which contains the information requested to be retrieved or displayed.
Throws:
IOException - if an input or output error occurs.

UnsupportedCallbackException - if the implementation of this method does not support one or more of the Callbacks specified in the callbacks parameter.