Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

CustomCallbackHandler.java

Go to the documentation of this file.
00001 package net.threebit.utils.sosc;
00002 
00003 import javax.security.auth.*;
00004 import javax.security.auth.callback.*;
00005 import javax.security.auth.login.*;
00006 import org.jboss.security.auth.callback.SecurityAssociationCallback;
00007 import org.jboss.security.SimplePrincipal;
00008 
00013 public class CustomCallbackHandler implements CallbackHandler {
00014 
00015         private String userName = null;
00016         private String password = null;
00017 
00021         public CustomCallbackHandler (String userName, String password) {
00022                 this.userName = userName;
00023                 this.password = password;
00024         }
00025 
00029         public void handle (Callback[] callbacks) {
00030 
00031                 for (int i = 0; i < callbacks.length; i++) {
00032 
00033                         if (callbacks[i] instanceof TextOutputCallback) {
00034 
00035                                 // TODO: this callback can probably be ignored?
00036                                 TextOutputCallback toc = (TextOutputCallback)callbacks[i];
00037                                 switch (toc.getMessageType()) {
00038                                         case TextOutputCallback.INFORMATION:
00039                                                 System.out.println(toc.getMessage());
00040                                                 break;
00041                                         case TextOutputCallback.ERROR:
00042                                                 System.out.println("ERROR: " + toc.getMessage());
00043                                                 break;
00044                                         case TextOutputCallback.WARNING:
00045                                                 System.out.println("WARNING: " + toc.getMessage());
00046                                                 break;
00047                                         default:
00048                                                 throw new RuntimeException("Unsupported message type: " + toc.getMessageType());
00049                                 }
00050 
00051                         } else if (callbacks[i] instanceof NameCallback) {
00052 
00053                                 NameCallback nc = (NameCallback) callbacks[i];
00054                                 nc.setName(userName);
00055 
00056                         } else if (callbacks[i] instanceof PasswordCallback) {
00057 
00058                                 PasswordCallback pc = (PasswordCallback)callbacks[i];
00059                                 pc.setPassword(password.toCharArray());
00060 
00061                         } else if (callbacks[i] instanceof SecurityAssociationCallback) {
00062 
00063                                 SecurityAssociationCallback sac = (SecurityAssociationCallback) callbacks[i];
00064                                 sac.setPrincipal( new SimplePrincipal( userName ));
00065                                 sac.setCredential( password );
00066 
00067                         } else {
00068                                 throw new RuntimeException("Unrecognized Callback: " + callbacks[i]);
00069                         }
00070                 }
00071         }
00072 
00073 }

Generated on Mon Jul 14 17:19:19 2003 for SOSC by doxygen1.2.15