How to avoid storing passwords in the clear for tomcat's server.xml Resource definition of a DataSource?

前端 未结 9 1985

The resource definition in tomcat\'s server.xml looks something like this...



        
9条回答
  •  余生分开走
    2020-12-01 00:57

    Note:

    You can use WinDPAPI to encrypt and decrypt data

    public class MyDataSourceFactory extends DataSourceFactory{
    
    private static WinDPAPI winDPAPI;
    
    protected static final String DATA_SOURCE_FACTORY_PROP_PASSWORD = "password";
    
    @Override
    public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable environment) throws Exception{
    
        Reference ref = (Reference) obj;
        for (int i = 0; i < ref.size(); i++) {
            RefAddr ra = ref.get(i);
            if (ra.getType().equals(DATA_SOURCE_FACTORY_PROP_PASSWORD)) {
    
                if (ra.getContent() != null && ra.getContent().toString().length() > 0) {
                    String pwd = getUnprotectedData(ra.getContent().toString());
                    ref.remove(i);
                    ref.add(i, new StringRefAddr(DATA_SOURCE_FACTORY_PROP_PASSWORD, pwd));
                }
    
                break;
            }
        }
    
        return super.getObjectInstance(obj, name, nameCtx, environment);
      }
    }
    

提交回复
热议问题