1 23 package com.sun.enterprise.admin.server.core.jmx.auth; 24 25 import java.util.Enumeration ; 26 import java.util.HashSet ; 27 import java.util.logging.Logger ; 28 import java.util.logging.Level ; 29 import javax.management.remote.JMXPrincipal ; 30 import javax.security.auth.Subject ; 31 32 import com.sun.enterprise.admin.common.constant.AdminConstants; 33 import com.sun.enterprise.security.auth.LoginContextDriver; 34 import com.sun.enterprise.security.auth.realm.Realm; 35 import com.sun.enterprise.util.i18n.StringManager; 36 37 public class ASLoginDriverImpl implements LoginDriver { 38 39 private static final String ASADMIN_GROUP = "asadmin"; 40 41 private static Logger _logger = 42 Logger.getLogger(AdminConstants.kLoggerName); 43 44 private static StringManager _strings = 45 StringManager.getManager(ASLoginDriverImpl.class); 46 47 public ASLoginDriverImpl() { 48 } 49 50 public Subject login(String user, String password, String realm) { 51 LoginContextDriver.login(user, password, realm); 52 authorize(user, password, realm); 54 63 return null; 64 } 65 66 private void authorize(String user, String password, String realmName) { 67 boolean isAuthorized = false; 68 try { 69 boolean isValid = Realm.isValidRealm(realmName); 70 if (!isValid) { 71 realmName = Realm.getDefaultRealm(); 72 } 73 Realm realm = Realm.getInstance(realmName); 74 Enumeration groups = realm.getGroupNames(user); 75 while (groups != null && groups.hasMoreElements()) { 76 String groupName = (String )groups.nextElement(); 77 if (ASADMIN_GROUP.equals(groupName)) { 78 isAuthorized = true; 79 break; 80 } 81 } 82 } catch (Exception ee) { 83 _logger.log(Level.WARNING, "core.auth_failed", realmName); 84 _logger.log(Level.INFO, "core.auth_fail_exception", ee); 85 SecurityException se = new SecurityException ( 86 _strings.getString("admin.auth.failed")); 87 se.initCause(ee); 88 throw se; 89 } 90 if (!isAuthorized) { 91 throw new SecurityException ( 92 _strings.getString("admin.auth.failed.nogroup")); 93 } 94 return; 95 } 96 97 } 98 | Popular Tags |