package connector;
import org.glassfish.security.common.PrincipalImpl;
import javax.security.auth.callback.Callback;
import javax.security.auth.Subject;
import javax.security.auth.message.callback.CallerPrincipalCallback;
import javax.security.auth.message.callback.PasswordValidationCallback;
import java.util.List;
public class RogueSecurityContextWithListener extends MySecurityContextWithListener{
public RogueSecurityContextWithListener(String userName, String password, String principalName) {
super(userName, password, principalName, true, true, false); //with translationRequired
}
protected void addCallbackHandlers(List<Callback> callbacks, Subject execSubject) {
//when translation required is ON, PasswordValidationCallback can't be used
PasswordValidationCallback pvc = null;
pvc = new PasswordValidationCallback(execSubject, userName, password.toCharArray());
debug("setting password validation callback with user [ " + userName + " ] + password [ " + password + " ]");
callbacks.add(pvc);
debug("setting Password Principal Callback for : Case-II - translation required");
/*
String principalName = "xyz";
CallerPrincipalCallback cpc = new CallerPrincipalCallback(execSubject, new PrincipalImpl(principalName));
debug("setting caller principal callback with principal : " + principalName);
*/
callbacks.add(pvc);
}
public void debug(String message){
System.out.println("JSR-322 [RA] [RogueSecurityContextWithListener]: " + message);
}
}