package edu.yale.its.tp.cas.auth.provider; import javax.security.auth.callback.*; import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; /** * Callback Handler that is used with the KerberosAuthHandler. * This Callback Handler is based on the SampleCallbackHandler from Sun. * * Two methods are added to this callback handler which allows the * KerberosAuthHandler to pass the username and password received from * the CAS Login page. * */ public class CASCallbackHandler implements CallbackHandler { private String CASUserId; private char [] CASPassword; public void handle(Callback[] callbacks) throws java.io.IOException, UnsupportedCallbackException { for (int i = 0; i < callbacks.length; i++) { if (callbacks[i] instanceof NameCallback) { NameCallback cb = (NameCallback)callbacks[i]; cb.setName(CASUserId); } else if (callbacks[i] instanceof PasswordCallback) { PasswordCallback cb = (PasswordCallback)callbacks[i]; cb.setPassword(CASPassword); } else { throw new UnsupportedCallbackException(callbacks[i]); } } } public void setUserId(String userid) { CASUserId = userid; } public void setPassword(String password) { CASPassword = password.toCharArray(); } }