WEB开发网
开发学院软件开发Java Geronimo V2.1.5 中的安全提升 阅读

Geronimo V2.1.5 中的安全提升

 2010-07-02 00:00:00 来源:WEB开发网   
核心提示: 如果 server 处于启动的状态,并且没有配置过其它的加密方式的话,Geronimo V2.1.5 中的安全提升(4),那么如下命令deploy.sh encrypt secret也只是采用默认的简单加密方式,结果与清单 3 所示的密文相同,通过这样的改进,我们就可以在部署计划中写入加密后密码

如果 server 处于启动的状态,并且没有配置过其它的加密方式的话,那么如下命令

deploy.sh encrypt secret

也只是采用默认的简单加密方式,结果与清单 3 所示的密文相同。但是,若服务器配置过其它加密方式,则这个命令会利用这个指定的方式加密明文。

配置一个自定义的加密方式十分简单,只需要编写一个实现了 Encryption 接口的 GBean,并在其 doStart 方法中将自己注册到 EncryptionManger 中去。如清单4所示。

清单 4. 自定义加密方式的 GBean 模板

 public class MyEncryption implements Encryption, GBeanLifecycle { 
  public void doStart() throws Exception { 
    EncryptionManager.setEncryptionPrefix("{MyEncryptionPrefix}", this); 
  } 
  String encrypt(Serializable source) { 
    ... 
  } 
  Serializable decrypt(String source) { 
    ... 
  } 
 } 

在部署计划中使用加密后的密码

Geronimo V2.1.5 中为 GAttributeInfo 增加了一个新的标志位:

private final boolean encrypted;

用于指定一个 GBean 中的某个属性是否是加密的。默认情况下,如果 GBean 属性的名称中含有”password”字符串,则其对应的 GAttributeInfo 对象的这个标志位会自动初始化为 true,否则则需要在 GBean 对象构造的时候指明。通过这样的改进,我们就可以在部署计划中写入加密后密码。清单 5 是一个例子。

清单 5. 在数据源的部署计划中使用加密后的密码

 <connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2" 
      xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2"> 
      
  <dep:environment> 
    <dep:moduleId> 
      <dep:groupId>org.apache.geronimo.rex</dep:groupId> 
      <dep:artifactId>EmployeeDatasource</dep:artifactId> 
      <dep:version>2.1.5</dep:version> 
      <dep:type>rar</dep:type> 
    </dep:moduleId> 
    <dep:dependencies> 
      <dep:dependency> 
        <dep:groupId>org.apache.geronimo.configs</dep:groupId> 
        <dep:artifactId>system-database</dep:artifactId> 
        <dep:type>car</dep:type> 
      </dep:dependency> 
    </dep:dependencies> 
  </dep:environment> 
 
  <resourceadapter> 
   <outbound-resourceadapter> 
     <connection-definition> 
     <connectionfactory-interface>javax.sql.DataSource</connectionfactory-interface> 
       <connectiondefinition-instance> 
        <name>jdbc/EmployeeDatasource</name> 
        <config-property-setting name="UserName">rex</config-property-setting> 
        <config-property-setting name="Password">{Simple}rO0ABXNy 
 ABlqYXZheC5jcnlwdG8uU2VhbGVkT2JqZWN0Pj 
 Y9psO3VHACAARbAA1lbmNvZGVkUGFyYW1zdAACW0JbABBlbmNyeX 
 B0ZWRDb250ZW50cQB+AAFMAAlwYXJhbXNBbGd0ABJMamF2YS 
 9sYW5nL1N0cmluZztMAAdzZWFsQWxncQB+AAJ4cHB1cgACW0Ks8xf4Bgh 
 U4AIAAHhwAAAAEArVToThqcjvbXFD5C2uUmpwdAADQUVT</config-property-setting> 
     <config-property-setting name="DatabaseName">Employee</config-property-setting> 
     <config-property-setting name="CreateDatabase">true</config-property-setting> 
          <connectionmanager> 
            <xa-transaction> 
              <transaction-caching/> 
            </xa-transaction> 
            <single-pool> 
              <max-size>5</max-size> 
              <min-size>0</min-size> 
          <blocking-timeout-milliseconds>5000</blocking-timeout-milliseconds> 
              <idle-timeout-minutes>15</idle-timeout-minutes> 
              <match-one/> 
            </single-pool> 
          </connectionmanager> 
          <!--global-jndi-name>EmployeeDatasource</global-jndi-name--> 
        </connectiondefinition-instance> 
      </connection-definition> 
    </outbound-resourceadapter> 
  </resourceadapter> 
   
 </connector> 

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Geronimo 安全 提升

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接