1 22 package org.jboss.mq.sm.file; 23 24 import java.security.acl.Group ; 25 import java.util.Map ; 26 27 import javax.security.auth.Subject ; 28 import javax.security.auth.callback.CallbackHandler ; 29 import javax.security.auth.login.LoginException ; 30 31 import org.jboss.security.SimpleGroup; 32 import org.jboss.security.SimplePrincipal; 33 import org.jboss.security.auth.spi.UsernamePasswordLoginModule; 34 35 43 44 public class DynamicLoginModule extends UsernamePasswordLoginModule 45 { 46 static final String DEFAULT_SM_NAME = "jboss.mq:service=StateManager"; 47 48 DynamicStateManager sm = null; 49 50 public DynamicLoginModule() 51 { 52 53 } 54 55 public void initialize(Subject subject, CallbackHandler callbackHandler, Map sharedState, Map options) 56 { 57 super.initialize(subject, callbackHandler, sharedState, options); 58 try 59 { 60 String smName = (String ) options.get("sm.objectname"); 61 if (smName == null) 62 smName = DEFAULT_SM_NAME; 63 64 javax.management.ObjectName smObjectName = new javax.management.ObjectName (smName); 65 66 javax.management.MBeanServer server = org.jboss.mx.util.MBeanServerLocator.locateJBoss(); 68 sm = (DynamicStateManager) server.getAttribute(smObjectName, "Instance"); 69 70 } 71 catch (Exception ex) 72 { 73 super.log.error("Failed to load DynamicSecurityManager", ex); 74 } 75 76 } 77 78 81 public boolean login() throws LoginException 82 { 83 if (sm == null) 84 throw new LoginException ("StateManager is null"); 85 86 return super.login(); 87 } 88 89 90 95 protected String getUsersPassword() throws LoginException 96 { 97 return ""; 98 } 99 100 106 protected boolean validatePassword(String inputPassword, String expectedPassword) 107 { 108 boolean valid = false; 109 try 110 { 111 valid = sm.validatePassword(getUsername(), inputPassword); 112 } 113 catch (Throwable e) 114 { 115 super.setValidateError(e); 116 } 117 return valid; 118 } 119 120 129 protected Group [] getRoleSets() throws LoginException 130 { 131 SimpleGroup userRoles = new SimpleGroup("Roles"); 132 String [] roles = null; 133 try 134 { 135 roles = sm.getRoles(getUsername()); 136 } 137 catch (Exception ex) 138 { 139 super.log.error("Could not get roleSets for user " + getUsername(), ex); 140 throw new LoginException ("Could not get roleSets for user"); 141 } 142 if (roles != null) 143 { 144 for (int i = 0; i < roles.length; i++) 145 { 146 userRoles.addMember(new SimplePrincipal(roles[i])); 147 } 148 } 149 150 Group [] roleSets = {userRoles}; 151 return roleSets; 152 } 153 } 155 156 157 | Popular Tags |