平常我们配置数据源可能都是明文的配置下数据库用户和密码连上数据库就ok,但是有些用户感觉这明文的密码还是很不爽的,那么我们就需要给密码加密了,进入正题: 我的数据源配置是tomcat 目录下面 conf 文件夹下面的 context.xml文件:(这是未加密的配置)
<?xml version="1.0" encoding="UTF-8"?>
<!-- The contents of this file will be loaded for each web application -->
<context>
<!-- Default set of monitored resources 172.16.5.28:KM-->
<watchedresource>WEB-INF/web.xml</watchedresource>
<resource
name="jdbc/test"
auth="Container"
type="javax.sql.DataSource"
maxactive="500"
maxidle="30"
maxwait="10000"
username="test"
password="test
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl">
</resource>
</context>
然后附件中的文件就派上用场了(encrypt2.bat,commons-dbcp-1.2.2.jar和commons-pool-1.4.jar )
1、进入tomcat的安装目录: tomcatroot\common\lib
2、复制encrypt2.bat和commons-dbcp-1.2.2.jar和commons-pool-1.4.jar 进入该目录
3、进入cmd状态,切换入tomcatroot\common\lib目录 ,非常重要的是需要把webapps下面的各个应用里面的重复的jar删掉也就是要把所有的字母里面的commons-dbcp*.jar和commons-pool*.jar删掉
4、输入encrypt2.bat test (test)还是原密码,界面上会输出:
test 加密后: jAVagnSq2eQ=
test 解密后: test
5、修改context.xml password="jAVagnSq2eQ=" 并注意增加一行: factory="org.apache.commons.dbcp.BasicDataSourceFactory"
那么我们最后的配置就是:
<?xml version="1.0" encoding="UTF-8"?>
<!-- The contents of this file will be loaded for each web application -->
<context>
<!-- Default set of monitored resources 172.16.5.28:KM-->
<watchedresource>WEB-INF/web.xml</watchedresource>
<resource
name="jdbc/test"
auth="Container"
type="javax.sql.DataSource"
maxactive="500" maxidle="30"
maxwait="10000"
username="test"
password="jAVagnSq2eQ="
driverClassName="oracle.jdbc.OracleDriver"
factory="org.apache.commons.dbcp.BasicDataSourceFactory"
url="jdbc:oracle:thin:@localhost:1521:orcl">
</resource>
</context>
好了,重启试试吧!
原文来自:http://club.youshang.com/173/viewspace-1701,因为我觉得作者讲解不太详细,我把后面给去掉,保留了作者的前半部份。
Tomcat连接池写在server.xml里的数据用户以及密码都是明文,这样非常不安全的,如果一但知道了这个数据库名和密码获得,可想而知。
那么如何实现对数据库密码加密呢,,因为喜欢开源,接下来就奉献给大家。
最开始的想法是通过tomcat的源码从catalina.java这个加载类开始找,看连接池是如何加载的,然后修改这个类,重新ant。后来发现了连接池用的factory类,决定重这个类开始下手。
如果才能把用户名或者是密码使用加密算法进行加密使用呢,这就需要对Tomcat一般依赖dbcp连接池配置。
http://jakarta.apache.org/commons/dbcp/下载commons-dbcp源码包(一定要对用tomcat的版本),对org.apache.commons.dbcp.BasicDataSourceFactory类修改,根据"PROP_PASSWORD"RA找到如下:
value=properties.getProperty(PROP_PASSWORD);
if(value!=null){
dataSource.setPassword(value);
}
可以看得出来就是将配置文件中取出的密码,进行赋值给相关变量了,这个时候把准备好的加密码文件加进去,如我的加密码JAVA为Encode.java,将这个文件放在这个包下面,但要保证该Encode.java最好不引用除J2SE以外的其它包,否则还得把包给加进去,我这里改成:
value=properties.getProperty(PROP_PASSWORD);
if(value!=null){
dataSource.setPassword(Encode.decode(value));
}
就表示对从数据源配置中取过来的密码进行解密了,这个时候可见数据源配置中密码如下:
<parameter>
<name>password</name>
<value>1f65866187612115</value><!--原为123456-->
</parameter>
当然这里的密码是采用上面提到的Encode.java的encode进行加密码的,与decode是可逆的,这样才可以正确解密。
另外说明一下,从官方网站下载下来的源程序,采用ANT并不一定可以直接编译,我这里就是这种情况,编译的时候把错,将其导入ECLIPSE工程中,并加入相关POOL包,通过ANT也编译不过去,我猜想可能是ANT版本的原因,因为后面的我把"工程->自动编译..."给勾上后,自动编译过去,将这两个类BasicDataSourceFactory和Encode拷贝出来,将原来的包用WINRAR打开,放到其路径中。另外这外commons-dbcp-1.2.2.jar放到server/lib下面不行,至少我这边就不行,我的TOMCAT是5.0,我前面一直在这里找这个包都没有找到,但是我看数据源却是采用的BasicDataSourceFactory,后来动用了UE才搜索出来,原来在common的lib下面,将其拷贝进去,重启TOMCAT登陆,OK
分享到:
相关推荐
TOMCAT8 JNDI对用户名和密码加密
"JNDI 数据源配置(tomcat)" JNDI(Java Naming and Directory Interface)是一种Java API,用于访问命名和目录服务。JNDI 数据源配置是 Java Web 应用程序中常用的数据库连接方式。Tomcat 是一个流行的 Java Web ...
自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。
下面将详细介绍如何在WebSphere中配置JNDI数据源。 首先,配置JNDI数据源涉及到安全性的设置。在WebSphere管理控制台中,进入“安全性” -> “JAAS配置” -> “J2C认证数据”部分。在这里,你需要为数据库创建一个...
通过JNDI,我们可以将敏感信息(如数据库密码)从源代码中分离出来,存储在一个安全的地方,比如受保护的服务器环境变量或外部配置文件中。这样可以避免密码明文出现在配置文件中,降低了因源码泄露导致的安全风险。...
1. "tomcat7.0配置JNDI数据源的几种方式.docx" - 这个文档可能详细介绍了在Tomcat 7.0中设置JNDI数据源的不同方法,包括XML配置、Context元素的使用、以及可能的第三方库(如Apache DBCP或C3P0)集成。 2. "tomcat...
在未进行加密处理时,JBoss的数据源配置通常位于`%JBOSS_HOME%\server\%appname%\deploy`目录下的XML文件中,例如针对Oracle数据库的配置文件名为`oracle-ds.xml`。其中包含的配置项如下: - `<jndi-name>`: 数据源...
3. 配置连接池:填写数据源的基本信息,包括JNDI名称、数据库驱动类名、URL、用户名和密码。同时设置连接池参数,如最大连接数、最小连接数、超时时间等。 4. 测试连接:配置完成后,可以测试数据源连接,确保能成功...
- **步骤**:在WebLogic管理控制台中,需要创建JDBC数据源,设置JNDI名称、连接URL、用户名、密码、驱动类型等参数。 - **连接池**:数据源通常包含一个连接池,用于管理和复用数据库连接,以减少创建和关闭连接的...
在这个配置文件中,你需要声明SedureIdentityLoginModule,并提供相关的配置参数,比如数据源的JNDI名称、用户名、密码、加密算法等。例如: ```xml <module-option name="dsJndiName">java:jboss/datasources/...
上述配置中,`name`属性是数据源的JNDI名称,`auth`指认证方式,`type`指定数据源类型,`driverClassName`是数据库驱动类名,`url`是数据库连接地址,`username`和`password`是数据库登录凭证,最后的`maxActive`、...
除了在`context.xml`中配置数据源外,还可以通过其他方式配置JNDI资源。例如,可以通过环境变量或者系统属性来设置JNDI资源的值。 ##### 5.3 测试JNDI资源 确保JNDI资源正确配置后,可以通过编写简单的测试程序来...
本文详细介绍了 WAS 在部署过程中的关键步骤,包括 JDBC 提供程序配置、数据源配置、虚拟主机别名配置、应用程序安装以及系统调优等内容。此外,还简要介绍了 IHS 的部署流程。通过这些步骤,可以有效地部署和管理...
基于 SpringBoot 多数据源 动态数据源 主从分离 快速启动器 支持分布式事务。一个基于springboot的快速集成多数据源的启动器。支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。支持数据库...
- 配置JBoss的数据源JNDI名称。 - 在JBoss配置文件中添加数据库连接驱动信息。 - 设置数据库连接信息,包括URL、用户名和密码。 - 配置数据库连接池参数,如最大连接数、最小连接数、连接的最大空闲时间等。 - ...
Java Web技术中使用Tomcat作为Web服务器的应用较为广泛,其中配置数据源连接数据库是Java Web应用程序开发和部署的一个重要方面。数据源(DataSource)是JDBC的一个接口,它使得应用程序能够以一种标准的方式获取...
在本文中,我们将详细探讨如何配置WebLogic 8.1服务器以连接MySQL数据库,并使用MyEclipse进行数据源的配置。这是一个重要的步骤,对于开发基于Java的Web应用程序来说,能够确保应用程序可以顺利地访问和操作数据库...
在IBM WebSphere Application Server (WAS) 7.0环境下配置10g数据源,是为了让WebSphere能够连接到Oracle 10g数据库,以便应用能够处理和存储数据。以下是一份详细的步骤指南: 1. **配置JDBC提供程序**: - 首先...