`
fa610
  • 浏览: 10785 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Spring配置JNDI加密用户名密码

    博客分类:
  • Web
阅读更多
          Spring配置JNDI加密用户名密码这个标题一共包含了三件事:
1.JNDI配置数据源;
2.加密JNDI配置的用户名密码;
3.Spring配置JNDI;


1. JNDI配置数据源
运用JNDI技术会把数据源的配置信息从项目里分离出来添加到tomcat的context.xml(也可以是server.xml,只是server.xml修改后要重启tomcat)以降低和项目的耦合度,如果配置信息需要修改就不用重新部署项目了。具体做法如下:
    在tomcat的context.xml文件中的<Context>标签中添加配置信息,如下:
<Resource name="jdbc/mybatis"  
             auth="Container"  
             type="javax.sql.DataSource"  
factory="EncryptionBasicDataSourceFactory"
             driverClassName="com.mysql.jdbc.Driver"  
             url="jdbc:mysql://localhost:3306/hccgyb"  
             username="127%136%134%150%136%121%"  
             password="127%136%134%150%136%121%"  
             maxActive="20"  
             maxIdle="10"  
             maxWait="10000"/>
这里说一下name属性,这是数据源的名字,程序加载数据源就是按这个名字来找的,如果想深入了解,可以去网上了解一下lookup()这个方法(搜索java lookup)。另外同样用绿色标识出来的factory属性是为后面要做的加解密做的必要工作,如果不加密就可以删掉这个属性,它的具体配置会在加密用户名密码那一节说。

2. 加密JNDI配置的用户名密码
加密用户名密码是在网上拷了一段加密的代码,然后跑加密程序把要加密的明文变成密文复制到上面的配置信息中。这里重点要说的是解密的工作:
首先,要拿到配置文件中的用户名和密码。Tomcat启动加载context.xml文件时会通过BasicDataSourceFactory(org.apache.tomcat.dbcp.dbcp. BasicDataSourceFactory,网上说要用tomcat安装目录下lib中的commons-dbcp-1.2.2.jar包里的BasicDataSourceFactory类,对比之后发现这两个包下的BasicDataSourceFactory类功能是一样的,只是其中导入的包稍有不同,可能是由于tomcat的版本不同吧!)这个类拿到数据源配置信息来给数据源各个属性赋值,那么就可以通过继承这个类并修改其中给数据源赋值的代码部分来实现解密的工作。由于BasicDataSourceFactory类里大量的属性方法都private的,所以重新建一个和它一样的类(名字自己起EncryptionBasicDataSourceFactory)而不是继承。
其次,把解密的方法添加到EncryptionBasicDataSourceFactory这个类(新建一个java工程来创建这个类)。找到给用户名密码赋值的那段代码,调用解密方法,保存,将工程打成jar包,放到tomcat的lib目录下。另外,EncryptionBasicDataSourceFactory拷的是哪个jar包里BasicDataSourceFactory的内容,就要把哪个jar放到tomcat的lib目录下。代码片段如下:
if (value != null)
dataSource.setTestWhileIdle(Boolean.valueOf(value).booleanValue());
value = decrypt(properties.getProperty("password")); if (value != null)
dataSource.setPassword(value);
value = properties.getProperty("url");
if (value != null)
dataSource.setUrl(value);
value = decrypt(properties.getProperty("username")); if (value != null)
dataSource.setUsername(value);
value = properties.getProperty("validationQuery");
绿色标识出的decrypt()是加入的解密方法,和之前的加密方法是对应的!
    最后,该说说配置信息中的factory属性了。这个属性就是用来指定tomcat配置数据源时所用的类了。注意,这里要写类的全名!

3.Spring配置JNDI
在spring中配置了JNDI后,JNDI就是交由spring管理的一个组件,就不用在web.xml中配置了。配置代码如下:
<beanid="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName">
<value>java:comp/env/jdbc/mybatis</value>
  </property>
</bean>
这里用绿色标出来的jdbc/mybatis就是在tomcat的context.xml中配置的数据源的名字。
    现在三件工作就做完了,其中用到的打jar包,反编译之类的网上资料是很多的,这里就不重复了。
1
1
分享到:
评论

相关推荐

    springsecurity.pdf

    配置BASIC认证机制涉及到设置编码方式、用户名和密码的存储位置等参数。 #### 十二、摘要认证机制 ##### 13.1 概览 摘要认证机制是一种基于MD5或SHA等摘要算法的认证方式,相比BASIC认证更安全。 ##### 13.2 ...

    (sshproject)tomcat调用jboss上的ejb3.0

    配置Hibernate的`hibernate.cfg.xml`文件,设置MySQL的连接参数,包括数据库URL、用户名和密码。 4. **远程调用EJB**: - 使用JNDI查找服务来获取远程EJB的引用。在Tomcat应用中,你可以使用JNDI API来查找Jboss上...

    jsp简单的用户管理与登录.pdf

    例如,可以创建一个名为`users`的表,包含`id`(主键)、`username`(用户名)、`password`(加密后的密码)和`email`(用户邮箱)等字段。 接下来,我们将实现用户注册功能。在JSP中,我们可以通过HTML表单收集...

    WEBLOGIC详细配置 - YAN.doc

    - 输入用户名和密码,建议记录下来。 - 指定JDK的位置。 - 设置服务名称,如`beayan`。 - 不勾选自动启动服务选项,便于后期手动控制启动流程。 3. **环境变量配置**: - 对于Oracle数据库,可以通过设置环境...

    oracle12相关jar包及配置.rar

    开发者需要在代码中指定数据库URL、用户名和密码。例如: ```java String url = "jdbc:oracle:thin:@//hostname:port/service_name"; String username = "your_username"; String password = "your_password"; ...

    ldap技术总结和开发文档

    其中,数据通常包括用户名、密码、电子邮件地址、部门信息等。 **LDAP目录服务** 目录服务是LDAP的核心功能,它允许用户通过统一的接口来查找和管理网络资源。LDAP目录服务支持多级组织结构,每个节点称为条目...

    Java Web之高级应用

    自动登录通常涉及Cookie和Session的使用,使得用户在访问网站时无需每次都输入用户名和密码。单点登录(SSO)允许用户在一个系统登录后,无须再次认证即可访问其他相互信任的系统。实现SSO通常需要一个中央认证服务...

    ojdbc7-12.1.0.2.jar

    此外,为了确保安全,数据库连接的用户名和密码不应硬编码在代码中,而是应存储在环境变量、配置文件或使用加密方式处理。 总之,ojdbc7-12.1.0.2.jar是Java开发者在处理Oracle 12c数据库时不可或缺的工具,它提供...

    ldap Java实战

    2. **连接 LDAP 服务器**:首先,我们需要配置连接参数,如URL、用户名和密码,然后使用这些参数创建InitialDirContext对象。例如: ```java Hashtable, String&gt; env = new Hashtable(); env.put(Context.INITIAL...

    tomcat-encrypt-datasouce

    在Web应用程序中,数据库连接信息,如用户名、密码等敏感信息通常存储在配置文件中,直接暴露可能会带来安全风险。因此,对这些信息进行加密是保护系统免受恶意攻击的重要措施。 `tomcat-encrypt-datasouce`项目...

    JavaWeb.zip

    使用Servlet或控制器(如Spring MVC的Controller)处理HTTP请求,通过数据库查询验证用户名和密码。注册功能则涉及到用户信息的收集和存储,可能还需要包含邮箱验证或密码加密等安全措施。 3. **购物车功能**:...

    ldap的一个实例

    - **连接LDAP服务器**:配置LDAP连接参数,如URL、用户名、密码,创建`InitialDirContext`对象。 - **查询操作**:编写 LDAP 查询语句,利用`DirContext.search()`方法获取匹配的条目。 - **添加与删除**:使用`...

    java操作LDAP的架包

    然后,提供必要的连接参数,如服务器地址、端口、用户名和密码。 4. 搜索LDAP: 使用`DirContext.search()`方法可以执行LDAP查询。查询语法遵循LDAP的过滤表达式,例如:`"(cn=John Doe)"`。还可以指定搜索的基DN...

    java ad域操作

    这通常涉及到配置AD服务器的URL(例如:ldap://dc=example,dc=com)、端口(默认是389或636,如果使用SSL加密则是636)、用户名和密码。使用`InitialLdapContext`类创建上下文并执行 bind 操作以建立连接。 2. **...

    dbconnection2.0

    5. **安全性**:数据连接的安全性不容忽视,涉及用户名、密码的加密存储,防止SQL注入攻击,以及使用预编译语句(PreparedStatement)来提升安全性和效率。 综上所述,"dbconnection2.0" 提供了一个全面的数据库...

    db2数据库驱动jar包

    10. **安全性**: DB2驱动支持多种安全机制,包括用户名/密码认证、SSL加密、以及集成企业目录服务(如LDAP)进行身份验证。 总之,DB2数据库驱动jar包是Java开发者与DB2数据库进行通信的关键组件,它提供了丰富的...

    multi-datasource-jdbc

    1. **配置驱动**:每个数据源都需要对应的数据库驱动,这些驱动需要在项目中正确引入,并在配置文件(如`application.properties`或`application.yml`)中指定连接参数,如URL、用户名、密码等。 2. **Spring框架...

    ojdbc8-full.zip

    - 数据源配置:通过JNDI查找或Spring框架配置数据源。 6. **性能优化**: - 使用PreparedStatement预编译SQL,减少解析次数。 - 使用批处理操作,一次性提交多个相似的SQL语句。 - 适当调整JDBC属性,如设置...

    东软的一个小项目,没有前台,通过数据库注册登录,在控制台显示

    1. **数据库管理**:使用关系型数据库如MySQL或Oracle存储用户信息,包括用户名、密码(通常经过加密存储)、邮箱等。这需要编写SQL语句进行数据操作。 2. **实体类(Entity)**:创建User类,表示数据库中的用户表...

    h2数据库.pdf

    - **Spring框架集成**:Spring支持通过JNDI或直接配置的方式与H2集成。 - **JMX监控**:使用Java Management Extensions (JMX)对数据库进行监控和管理。 #### 十、H2数据库的管理工具 - **Shell工具**:命令行工具...

Global site tag (gtag.js) - Google Analytics