修改websphere 6.1 JAAS AUTH DATA

package com.sortec.jmx;


import java.util.Properties;
import java.util.Set;


import javax.management.Attribute;
import javax.management.AttributeList; 
import javax.management.ObjectName;


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


import com.ibm.websphere.management.AdminClient;
import com.ibm.websphere.management.AdminClientFactory;
import com.ibm.websphere.management.Session;
import com.ibm.websphere.management.configservice.ConfigServiceHelper;
import com.ibm.websphere.management.configservice.ConfigServiceProxy; 


/**
 * websphere 6.1 jndi 连接用的j2c认证数据
 * @author wuxin 
 * @email wuxin@sortec.com.cn
 * @date 2011-9-9
 */
public class WasJ2cAuthPwdHandler
{


    private Log log = LogFactory.getLog(WasJ2cAuthPwdHandler.class);
    
    private WasJ2cObject wasJ2cObject ;
     
    
    public WasJ2cAuthPwdHandler(WasJ2cObject wasJ2cObject)
    {
        this.wasJ2cObject = wasJ2cObject ;
    }
    
    
    /**
     * 修改密码
     * @return
     */
    public boolean createAuthData()
    {
        AdminClient adminClient = null;
        boolean result = false;
        try
        {
            log.info("ready update info: washost="+wasJ2cObject.getHostname()+" wasport="+wasJ2cObject.getSoap_port()+" wasusername="+wasJ2cObject.getUsername()+
                     " waspassword="+wasJ2cObject.getPassword()+" j2calias="+wasJ2cObject.getJ2c_alias()+" j2cuserid="+wasJ2cObject.getJ2c_userid()+" j2cpassword="+wasJ2cObject.getJ2c_password());  
            adminClient = this.getAdminClient();
            if(adminClient == null) return result;
            
            ConfigServiceProxy configService =  new ConfigServiceProxy(adminClient);            
            Session session = new Session();
            
            // Use this group to add to the node scoped security.xml.
            ObjectName pattern = ConfigServiceHelper.createObjectName(null,"Security");
            ObjectName[] securitys = configService.queryConfigObjects(session, null, pattern, null); 
            
            AttributeList attrList = new AttributeList();
            attrList.clear();
            attrList.add(new Attribute("alias", ""+System.currentTimeMillis()));
            attrList.add(new Attribute("userId", "username"));
            attrList.add(new Attribute("password", "password"));
            ObjectName authDataObjectName = configService.createConfigData(session, securitys[0],"authDataEntries", "JAASAuthData", attrList);
            System.out.println(authDataObjectName.toString());
            configService.save(session,false);
            
              
        }catch(Exception e)
        {
            e.printStackTrace();
            
        }finally
        {
            if(adminClient != null) adminClient = null;
        }
        return result ;
    }
    
    
    
    /**
     * 修改密码
     * @return
     */
    public boolean updateAuthData()
    {
        AdminClient adminClient = null;
        boolean result = false;
        try
        {
            log.info("ready update info: washost="+wasJ2cObject.getHostname()+" wasport="+wasJ2cObject.getSoap_port()+" wasusername="+wasJ2cObject.getUsername()+
                     " waspassword="+wasJ2cObject.getPassword()+" j2calias="+wasJ2cObject.getJ2c_alias()+" j2cuserid="+wasJ2cObject.getJ2c_userid()+" j2cpassword="+wasJ2cObject.getJ2c_password());  
            adminClient = this.getAdminClient();
            if(adminClient == null) return result; 
            
            ConfigServiceProxy configService =  new ConfigServiceProxy(adminClient);            
            Session session = new Session();
            
            // Use this group to add to the node scoped security.xml.
            ObjectName j2c = ConfigServiceHelper.createObjectName(null,"JAASAuthData",null);
            ObjectName[] j2cs = configService.queryConfigObjects(session, null,j2c, null);
            
            for(ObjectName on : j2cs)
            {
                Object alias = configService.getAttribute(session, on, "alias");
                String aliasStr = alias.toString();
                log.info("list j2calias from was :"+aliasStr);
                if(aliasStr.equals(wasJ2cObject.getJ2c_alias()))
                { 
                     
                    Object userId = configService.getAttribute(session, on, "userId");
                    Object password = configService.getAttribute(session, on, "password"); 
                    log.info("old j2c auth data : alias="+alias+",userid="+userId+",password="+password);
                    
                    AttributeList provAttrs = new AttributeList(); 
                    provAttrs.add(new Attribute("userId", wasJ2cObject.getJ2c_userid()));
                    provAttrs.add(new Attribute("password",wasJ2cObject.getJ2c_password()));
                    //update the JAASAuthData
                    
                    configService.setAttributes(session, on, provAttrs);
                    
                    //save
                    configService.save(session, false);
                     
                    //restart server
//                    this.restartServer(adminClient);
                    
                    result = true;
                     
                    break; 
                }
            }  
        }catch(Exception e)
        {
            e.printStackTrace();
            
        }finally
        {
            if(adminClient != null) adminClient = null;
        }
        return result ;
    }
    
    
    private AdminClient getAdminClient()
    {
        AdminClient adminClient = null;
        try
        {
            String hostname = wasJ2cObject.getHostname();
            int port = wasJ2cObject.getSoap_port();
            String username = wasJ2cObject.getUsername();
            String password = wasJ2cObject.getPassword();
            String  trustStore = wasJ2cObject.getTrustStore();
            String keyStore = wasJ2cObject.getKeyStore();
            String trustStorePassword = wasJ2cObject.getTrustStorePassword();
            String keyStorePassword = wasJ2cObject.getKeyStorePassword();
            log.info("\nWebsphere 开始连接");
//            System.setProperty("javax.net.debug", "ssl");
            Properties connectProps = new Properties();
            connectProps.setProperty(AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP);
            connectProps.setProperty(AdminClient.CONNECTOR_HOST, hostname);
            connectProps.setProperty(AdminClient.CONNECTOR_PORT, String.valueOf(port));
//            connectProps.setProperty(AdminClient.CONNECTOR_SECURITY_ENABLED, "true");
             
            // WebSphere服务器是否已启用管理安全性   
            if(trustStore!=null&&!trustStore.trim().equals(""))
                connectProps.setProperty("javax.net.ssl.trustStore",trustStore);  
            
            if(keyStore!=null&&!keyStore.trim().equals(""))
                connectProps.setProperty("javax.net.ssl.keyStore", keyStore);
            
            if(trustStorePassword!=null&&!trustStorePassword.trim().equals(""))
                connectProps.setProperty("javax.net.ssl.trustStorePassword",trustStorePassword);
            
            if(keyStorePassword!=null&&!keyStorePassword.trim().equals(""))
                connectProps.setProperty("javax.net.ssl.keyStorePassword", keyStorePassword);  
         
 
            if(username!=null&&!username.trim().equals(""))
                connectProps.setProperty(AdminClient.USERNAME, username);
            
            
            if(password!=null&&!password.trim().equals(""))             
                connectProps.setProperty(AdminClient.PASSWORD, password);
            
            
            
            adminClient = AdminClientFactory.createAdminClient(connectProps); 
            
        }catch(Exception e)
        {
            e.printStackTrace();
            log.error("异常:getConnectWebsphere(),可能服务未启,或jar包资源不全 "); 
        }
        return adminClient ;
    }
    
 
    
    private void restartServer(AdminClient adminClient)
    {
        try
        {             
            ObjectName name = new ObjectName("WebSphere:*,type=Server,j2eeType=J2EEServer");  
            Set queryResult = adminClient.queryNames(name, null); 
            ObjectName serverMBean =(ObjectName) queryResult.iterator().next();
            log.info("***** restart server:"+serverMBean.toString());
            adminClient.invoke(serverMBean,"restart",null,null); 
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    }


    
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值