1 4 package com.nightlabs.ipanema.asyncinvoke; 5 6 import java.io.IOException ; 7 8 import javax.security.auth.callback.Callback ; 9 import javax.security.auth.callback.CallbackHandler ; 10 import javax.security.auth.callback.NameCallback ; 11 import javax.security.auth.callback.PasswordCallback ; 12 import javax.security.auth.callback.UnsupportedCallbackException ; 13 14 import com.nightlabs.ipanema.servermanager.IpanemaServerManager; 15 import com.nightlabs.ipanema.servermanager.j2ee.SecurityReflector; 16 17 20 public class AuthCallbackHandler implements CallbackHandler 21 { 22 private String organisationID; 23 private String userID; 24 private String userName; 25 private char[] password; 26 27 public AuthCallbackHandler(IpanemaServerManager ism, AsyncInvokeEnvelope envelope) { 28 SecurityReflector.UserDescriptor caller = envelope.getCaller(); 29 this.organisationID = caller.getOrganisationID(); 30 this.userID = caller.getUserID(); 31 this.userName = userID + '@' + organisationID; 32 this.password = ism.ipanemaSecurity_createTempUserPassword( 33 organisationID, userID).toCharArray(); 34 } 35 36 39 public void handle(Callback [] callbacks) 40 throws IOException , 41 UnsupportedCallbackException 42 { 43 for (int i = 0; i < callbacks.length; ++i) { 47 Callback cb = callbacks[i]; 48 if (cb instanceof NameCallback ) { 49 ((NameCallback )cb).setName(userName); 50 } 51 else if (cb instanceof PasswordCallback ) { 52 ((PasswordCallback )cb).setPassword(password); 53 } 54 else throw new UnsupportedCallbackException (cb); 55 } 56 57 } 58 59 } 60 | Popular Tags |