jndi 数据源配置密码加密

Tomcat JNDI数据源配置详解与最佳实践 JNDI(Java命名和目录接口)是Java EE中用于集中管理资源的重要技术,其核心原理是通过命名服务实现资源与物理位置的解耦。在数据库连接场景中,JNDI数据源通过连接池技术显著提升性能,同时实现配置与代码分离。典型应用包括Web应用的数据库连接管理,支持多应用共享配置和热更新能力。本文以Tomcat容器为例,深入解析server.xml全局配置、context.xml应用级配置等不同实现方案,涵盖连接池参数调优、多数据源管理等工程实践。针对微服务架构和云原生环境,特别提供了动态配置注入和健康检查等进阶 阅读详情

平常我们配置数据源可能都是明文的配置下数据库用户和密码连上数据库就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


tomcat_连接池数据库密码加密解密方法 详细讲解tomcat 连接池数据库解密加密方法以及过程。 立即下载

相关推荐

Manimgl 进阶笔记

目录 一、调整视频输出的纵横比 二、调整预览窗口的尺寸 三、在开发工具中直接调试 一、调整视频输出的纵横比 调整输出视频的纵横比,在日常开发中属于比较基本的需求。要使用 Manimgl 得到期望的分辨率的视频输出需要修改以下几个地方: 第一步:在 custom_config.yml 配置文件中通过 camera_qualities设置视频的输出分辨率。manimlib 框架已经在 default_config.yml 文件中设置了四种视频输出分辨率,default_qualities 参数.

gunnery的专栏 2859

JNDI数据源加密方法

当需要对JNDI数据源的数据进行加密的时候,可以通过自定义Factory类实现,Factory负责为其服务创建适当的InitialContext对象。不定义factory类时默认访问tomcat下org\apache\tomcat\dbcp\dbcp\BasicDataSourceFactory该类,为了不碰tomcat原标准,将该类源码复制一份并加入解码方法即可。以tomcat为例,将数据源的密...

qq_33459156的博客 1877

如何理解Apollo模型参考自适应控制MRAC

最近有了解到百度无人驾驶Apollo项目中的横向控制有用到MRAC(Model Reference Adaptive Control),于是便详细研究了一下这个控制方法,在此总结一下心得。 什么是MRAC MRAC控制系统的基本结构图如下所示: 它由两个环路组成,由控制器和受控对象组成内环,这一部分称之为可调系统,由参考模型和自适应机构组成外环。实际上,该系统是在常规的反馈控制回路上再附加一个参考模型和控制器参数的自动调节回路而形成。在该系统中,参考模型的输出或状态相当于给定一个动态性能指标,(通常,参考模

zmhzmhzm的博客 6480

JBoss JNDI数据源密码加密处理

应用系统中的数据源通常配置在程序中,或者在应用服务器中配置JDNI数据源,在程序中引用。相对来说在应用服务器中配置JNDI数据源更好一点,因为这样一来,数据源变更之后不用修改程序,只要修改应用服务器中JNDI配置即可。在配置数据源的时候,我们经常会看见有很多人将数据源的密码配置成明文的。这样其实不太安全。因为稍有这个常识的人就可以去查看你的配置文件,这样就能够知道你的数据库的用户名和密码。所以我们...

风萧萧兮易水寒,壮士一去兮不复还 1205

Cadence Virtuoso VIVA波形分析:从背景色修改到线宽调整的完整指南

本文详细介绍了Cadence Virtuoso VIVA波形分析工具的核心使用技巧,包括背景色修改、线宽调整等高级功能。通过具体操作步骤和配置方法,帮助工程师优化波形显示效果,提升工作效率。特别强调了与Calculator组件的配合使用,以及专业波形图的输出技巧。

weixin_27330481的博客 621

基于MySQL的京东用户行为分析

对京东用户行为的分析,利用AARRR模型进行分析。

SelenaSelena的博客 1911

java获取jndi密码,如何在spring中覆盖JndiObjectFactoryBean并在java中设置解密密码

I have a datasource in tomcat which has password that is encrypted using some algorithm and I want to decrypt the same when i establish connection with DB.Following is my spring config codeThe above b...

weixin_34543543的博客 275

别再用Excel画波特图了!用LTspice免费仿真软件,5分钟搞定电路传递函数分析

本文介绍了如何利用LTspice免费仿真软件高效绘制波特图,解决传统Excel绘图效率低、精度不足的问题。通过详细的操作步骤和实战案例,展示LTspice在电路传递函数分析中的自动化计算、专业级精度和完整特性展示等优势,帮助工程师快速完成频率响应分析。

weixin_42524226的博客 462

使用JNDI模式连接数据库并对配置文件中的密码进行加密

tomcat里面的数据库连接配置是指向: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory 我们进入到该jar包中可以看见,这个里面是获取用户名和密码以及其他参数的: value = properties.getProperty("password"); if (value != null) { ...

回到从前变成猫的博客 849

CodeX 登录报错 os error 10013?一键修复 CodeX 无法登录问题(亲测有效)

CodeX 登录时报 os error 10013?本文提供快速修复方案,实测有效,彻底解决登录报错:登录失败:failed to start login server: 以一种访问权限不允许的方式做了一个访问套接字的尝试。 (os error 10013)的问题💡

XiaoqiangClub的博客 2934

如何在 Mac 上下载安装 Xcode——并为 iOS 开发更新它原文

下载 Xcode安装命令行工具打开新版本删除文件注意,我在下面的步骤中列出了一些终端命令。这些命令可以被输入到你现在的工作目录中。这意味着你不需要导航到任何特定的文件夹。如果你真的想这样做,你可以在输入下面的步骤中的命令之前先输入== cd==。这将使你返回到主文件夹。

专注于AI领域前沿知识,业余爱好开发软件 4670

JNDI Tomcat数据源配置中密码加密

项目环境:Tomcat5 JNDI配置: 在这段配置中的密码是明文表示的。 我能不能对该域进行加密处理呢,要怎么做,甚至是采用自己的加密算法呢? ...

hdbeyond 770

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

 闲来无事觉得以前用过的一些东西过一段时间会忘记,所以开始想着发博文,第一次发博文,如有问题大家请多多指正。     1,首先在application.xml里面配置数据源 1 2 3 4 5     &lt;bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBea...

掬水月在手,弄花香满衣 1076

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

tomcat JNDI 加密

由于tomcat 未提供数据源加密逻辑,需要请参考一下 1. 将解压后得到的tomcatJNDIEncrypt.jar 拷贝至tomcat7主目录/lib 目录中。 2. 修改至tomcat7主目录/conf/context.xml 中的Resource标签,添加 factory=&amp;amp;quot;aurora.tomcat.jndi.encrypt.AuroraTomcat7Security...

snoweaglelord的博客 1964

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Tomcat连接池加密

一、说明 Tomcat配置JNDI数据源时密码是以明文的形式出现在配置文件中,这样存在安全隐患,比较可取的方法是将配置文件用户相关的信息(例如:用户名、密码)进行加密使其以密文形式存在,进行初始化连接池的时候进行解密操作,达到成功创建连接池的目的。(附录是对tomcat加载过程的说明,若对其不明白请先阅读) 二、加密实现方式 第一种方式比较简单,直接修改BasicDataSour

IOT之无线网络传输技术 2677

对 Tomcat 的 jndi 配置信息加密

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34102807的博客 505

weblogic JNDI 配置文件位置

今天看程序的时候报Naming exception in JNDIConnectionFactory looking up data source发现原来是JNDI配置的数据库找不到,因为没有weblogic后台登陆权限,所以找到配置JNDI配置文件的位置在weblogic项目目

1851

为cache.xml中的密码加密

为什么80%的码农都做不了架构师?>>> ...

weixin_33768481的博客 290

Spring配置JNDI加密用户名密码

[size=x-large] [b]Spring配置JNDI加密用户名密码[/b][/size]这个标题一共包含了三件事: [color=blue]1.JNDI配置数据源; 2.加密JNDI配置的用户名密码; 3.Spring配置JNDI;[/color] 1. JNDI配置数据源 运用JNDI技术会把数据源的配置信息从项目里分离出来添加到tomcat的conte...

iteye_21277的博客 242

birt使用jdbc链接mysql_用连接池配置BIRT报表的数据库连接。。。。

现阶段我们在开发报表的时候,是使用jdbc链接数据库的,为提高报表的运行效率和稳定性,使用连接池进行管理。比较简便和低耦合的解决办法,使用jndi连接池。jdbc和jndi的区别JDBC -最基本的连接数据库的方式, 每次对数据库打交道的时候 ,连接数据库是需要实例下你实现连接数据库的方法或者类。JNDI DataSource 英文全称是:Java Naming and Directory Int...

weixin_28943467的博客 398

Druid使用中出现的常见问题——下

文章目录16. Druid中的maxIdle为什么是没用的?17. 我的应用配置的是JNDI数据源,可以用DruidDataSource么?18. 我的应用已使用DBCP,是代码中写死的,怎样更换为Druid?19. 我想试用快照版本,怎么获取?20. 有一些SQL执行很慢,我希望日志记录下来,怎么设置?21. 我希望加密我的数据库密码怎么办?22. 如何参与Druid的开发23. Druid的发...

qq_44891295的博客 1428
上一篇: struct2 文件上传
下一篇: struts2--ModelDriven
aaa1aaaaa
博客等级 码龄17年 9粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值