1 2import java.io.*; 3import javax.security.auth.callback.*; 4 5class ServerHandler implements javax.security.auth.callback.CallbackHandler{ 6 7 String authid; 8 String userid; 9 String password; 10 String realm; 11 12 public ServerHandler() 13 { 14 15 } 16 17 public ServerHandler(String authid, String userid, String password, String realm) 18 { 19 this.authid = authid; 20 this.userid = userid; 21 this.password = password; 22 this.realm = realm; 23 } 24 25 26 27 private String getinput(String prompt) 28 { 29 System.out.println(prompt); 30 System.out.print(">"); 31 32 String result=""; 33 34 try { 35 int c; 36 do { 37 c = System.in.read(); 38 if (c!='\n') 39 result+=(char)c; 40 } while (c!='\n'); 41 42 System.out.println("res = "+result); 43 } catch (IOException e) { 44 45 } 46 47 return result; 48 } 49 50 private void getauthid(NameCallback c) 51 { 52 if (authid!=null) { 53 c.setName(authid); 54 return; 55 } 56 57 /* authid = System.getProperty("user.name"); 58 if (authid!=null) { 59 c.setName(authid); 60 return; 61 } */ 62 63 c.setName( getinput(c.getPrompt())); 64 } 65 66 private void getpassword(PasswordCallback c) 67 { 68 if (password!=null) { 69 c.setPassword(password.toCharArray()); 70 return; 71 } 72 73 c.setPassword( (getinput("Enter password")).toCharArray()); 74 } 75 76 private void getrealm(RealmCallback c) 77 { 78 if (realm!=null) { 79 c.setRealm(realm); 80 return; 81 } 82 83 c.setRealm( getinput(c.getPrompt()) ); 84 } 85 86 public void invokeCallback(Callback[] callbacks) 87 throws java.io.IOException, UnsupportedCallbackException 88 { 89 for (int lup=0;lup<callbacks.length;lup++) 90 { 91 Callback c = callbacks[lup]; 92 93 if (c instanceof NameCallback) { 94 getauthid((NameCallback) c); 95 } else if (c instanceof PasswordCallback) { 96 getpassword((PasswordCallback) c); 97 } else if (c instanceof RealmCallback) { 98 getrealm((RealmCallback) c); 99 } else { 100 System.out.println("TODO!"); 101 System.exit(1); 102 } 103 } 104 } 105 106} 107