00001
00027 package org.objectweb.jonas.security.auth.callback;
00028
00029 import java.io.IOException;
00030 import javax.security.auth.callback.CallbackHandler;
00031 import javax.security.auth.callback.UnsupportedCallbackException;
00032 import javax.security.auth.callback.NameCallback;
00033 import javax.security.auth.callback.PasswordCallback;
00034 import javax.security.auth.callback.Callback;
00035 import java.security.cert.Certificate;
00036
00044 public class NoInputCallbackHandler implements CallbackHandler {
00045
00049 private String username = null;
00050
00054 private String password = null;
00055
00059 private Certificate cert = null;
00060
00065 public NoInputCallbackHandler() throws Exception {
00066 throw new Exception(
00067 "This class could only be used with the constructor NoInputCallbackHandler(String username, String password)");
00068 }
00069
00075 public NoInputCallbackHandler(String username, String password) {
00076 this.username = username;
00077 this.password = password;
00078 }
00079
00086 public NoInputCallbackHandler(String username, String password, Certificate cert) {
00087 this(username, password);
00088 this.cert = cert;
00089 }
00090
00101 public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
00102
00103 for (int i = 0; i < callbacks.length; i++) {
00104 if (callbacks[i] instanceof NameCallback) {
00105
00106 NameCallback nc = (NameCallback) callbacks[i];
00107 nc.setName(username);
00108 } else if (callbacks[i] instanceof PasswordCallback) {
00109
00110 PasswordCallback pc = (PasswordCallback) callbacks[i];
00111 pc.setPassword(password.toCharArray());
00112 } else if (callbacks[i] instanceof CertificateCallback) {
00113 CertificateCallback cc = (CertificateCallback) callbacks[i];
00114 cc.setUserCertificate(cert);
00115 } else {
00116 throw new UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
00117 }
00118 }
00119 }
00120 }