配置cndi数据源以及数据库密码加密

闲来无事觉得以前用过的一些东西过一段时间会忘记,所以开始想着发博文,第一次发博文,如有问题大家请多多指正。

1,首先在application.xml里面配置数据源

    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
	     <property name="jndiName">
	          <value>java:comp/env/jdbc/userDataSource</value>
	     </property>
     </bean>

2,配置web.xml,刚开始配置的时候,由于没有配置web.xml导致一直连接不上,后面查了一些资料才发现web.xml也需要配置。

  <resource-ref>
     <description>my DB Connection</description>
     <res-ref-name>jdbc/userDataSource</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
  </resource-ref>

3,打开tomcat目录下的conf,找到context.xml在里面配置数据库连接

	<Resource name="jdbc/userDataSource"   
			   auth="Container"
			   type="javax.sql.DataSource"    			   
               driverClassName="com.mysql.jdbc.Driver"   
               url="jdbc:mysql://ip/myDataDaseName"	 
               username="root"
			   password="password"
               maxIdle="40"    
               maxWait="4000" 
               maxActive="250" 
               removeAbandoned="true"
               removeAbandonedTimeout="180"
               logAbandoned="true"
               factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" />	

现在jndi应该是可以连接数据库了。

注意:如果修改了context里面的数据库连接,导致启动项目连接的还是以前的数据库地址请把eclipse里面Servers下面的tomcat删除掉,然后重新加入就OK了。

以上只是简单的用jndi连接数据库。

现在说一下怎么把数据库密码进行加密。其实很简单,tomcat里面的这个数据库连接配置最后还是指向

org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory

这个连接,反编译一看,发现就是在这个里面获取用户名密码以及其他参数的,所以我们在这里面动下手脚就OK了。源码:

value = properties.getProperty("password");
    if (value != null) {
      dataSource.setPassword(value);
    }

    value = properties.getProperty("url");
    if (value != null) {
      dataSource.setUrl(value);
    }

    value = properties.getProperty("username");
    if (value != null) {
      dataSource.setUsername(value);
    }

我是把这个BasicDataSourceFactory文件复制改名重写了一遍,改后的代码。

 value = properties.getProperty("password");
    if (value != null) {
      dataSource.setPassword(decode(value)); //解密操作
  }
  //自定义的解密方法,里面引用了AESEncrypt数字签名加密文件,config.properties里面配置了key钥
 private static String decode(String password) throws Exception {
    byte[] bas = AESEncrypt.parseHexStr2Byte(password);
    InputStream is = new FileInputStream("/opt/config/config.properties");
    Properties prop = new Properties();

    prop.load(is);
    String key = prop.getProperty("key");
    is.close();
    byte[] decr = AESEncrypt.decrypt(bas, key);
    return new String(decr);
  }

然后factory连接指向这个新建的文件就行了

 factory="org.apache.tomcat.dbcp.dbcp.DecodeBasicDataSourceFactory"

重写写一个类,是文件方便切换,如果不要加密直接指向BasicDataSourceFactory就行了。

时间: 2024-10-24 15:22:46

配置cndi数据源以及数据库密码加密的相关文章

关于druid数据库密码加密流程及问题

最近项目中需要在配置中将数据库密码加密,就使用了阿里的druid来实现,将流程和问题和大家分享一下. 项目使用的是Spring加jetty,原先数据库连接使用的是Apache的DBCP:commons-dbcp2-2.1.1.jar+ojdbc6.jar 配置:<New class="com.alibaba.druid.pool.DruidDataSource">            <Set name="driverClassName">

Druid使用及开启数据库密码加密

Springboot环境下的配置 1.maven引包 1 <dependency> 2 <groupId>com.alibaba</groupId> 3 <artifactId>druid</artifactId> 4 <version>1.0.26</version> 5 </dependency> 2.创建配置类 1 package com.tqh.demo.config; 2 3 import com.a

SpringBoot集成jasypt数据库密码加密

一.为什么要使用jasypt库? 目前springboot单体应用项目中,甚至没有使用外部配置中心的多服务的微服务架构的项目,开发/测试/生产环境中的密码往往是明文配置在yml或properties文件中, 这样就会导致密码泄露的安全隐患,被不法人员利用从而泄露公司数据信息 因此,jasypt库能通过密码加密减少明文密码泄露的风险: 二.什么是jasypt库? 参考:http://www.jasypt.org/index.html    Jasypt是一个Java库,允许开发人员以最小的努力将基

用户登录注册之数据库密码加密

在连接数据时,用户名密码都是明文,最近网上查资料,使用DES对其进行加密:同时用户注册后,密码都没有进行加密,对于数据库里面数据加密,可以使用password函数直接进行加密,也可以自定义加密,比如使用DES加密. 对数据库连接密码加密具体操作如下: 1.定义DES加密类 public class DESUtils {     private static Key key;     private static String KEY_STR = "qbkeytest";// 密钥   

druid 数据库密码加密

cmd命令: 1.切换的druid-0.2.9.jar包所在目录 2.在命令行中执行如下命令:java -cp druid-0.2.9.jar com.alibaba.druid.filter.config.ConfigTools you_password 即输出加密后密码 3.<!-- sql统计功能就不能用 <property name="filters" value="stat" /> --><property name=&quo

Druid数据库密码加密

1.找到druid-version.jar目录 2.cmd执行命令:cd到jar包目录下 3.执行命令:java -cp druid-1.1.17.jar com.alibaba.druid.filter.config.ConfigTools 123456,得到密钥 4.在application.properties中配置: spring.datasource.password=idOgPR4XQBOdVM59bDupheVnkjsL1ZTr6JJ0KC+KlnJh2SFWkYsdq2MuyHd

数据库密码加密公用秘要生成器,数据库密码加密解密入口

public class Encryptor { public static final String HUNDSUN_VERSION="@system 管理平台 @version 2.0.1 @lastModiDate @describe "; protected static final int BLOCK_SIZE = 8; private int[] workingKey = null; private byte[] userkey = null; /** * standard

druid数据库密码加密程序编写

第一步:引入 druid-1.0.1.jar 架包 第二步: 编写程序 package nihao; import com.alibaba.druid.filter.config.ConfigTools; public class er { @SuppressWarnings("static-access") public static void main(String[] args) { try { ConfigTools configTools = new ConfigTools

【Druid】-Druid数据源加密数据库密码配置

1.数据库配置文件添加配置 <property name="filter" value="config"> <property name="connectionProperties" value="config.decrypt=true"/> 2.使用druid.jar 命令生成密码加密串 Java -cp druid.jar com.alibaba.druid.filter.config.Config