/** * */ package com.idega.core.accesscontrol.jaas; 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.servlet.http.HttpServletRequest; /** * <p> * Implementation of the JAAS CallbackHandler used by the idegaWeb Authentication mechanism. * </p> * Last modified: $Date: 2007/01/22 08:16:38 $ by $Author: tryggvil $ * * @author <a href="mailto:tryggvil@idega.com">tryggvil</a> * @version $Revision: 1.2 $ */ public class IWCallbackHandler implements CallbackHandler { private HttpServletRequest request = null; public IWCallbackHandler(HttpServletRequest request) { this.request = request; } public void handle(Callback[] callbacks) { for (int i = 0; i < callbacks.length; i++) { Callback callback = callbacks[i]; if (callback instanceof PasswordCallback) { // prompt the user for sensitive information PasswordCallback pc = (PasswordCallback)callback; String prompt = pc.getPrompt(); String password = this.request.getParameter(prompt); pc.setPassword((password == null) ? null : password.toCharArray()); } else if (callback instanceof NameCallback) { NameCallback nc = (NameCallback) callback; String prompt = nc.getPrompt(); String name = this.request.getParameter(prompt); nc.setName(name); } } } }