我想将Web应用交给某些人,但不允许这些人使用某些工具访问数据库。使用webapplicaton并在后台使用数据库。
Wildfly有一个包含以下代码的配置:
<xa-datasource jndi-name="java:jboss/datasources/ExampleXADS" pool-name="ExampleXADS">
<driver>h2</driver>
<xa-datasource-property name="URL">jdbc:h2:mem:test</xa-datasource-property>
<xa-pool>
<min-pool-size>10</min-pool-size>
<max-pool-size>20</max-pool-size>
<prefill>true</prefill>
</xa-pool>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</xa-datasource>
如您所见,还有可用的用户名和密码。如何排除/加密这些,因此只有管理员知道数据库的密码。 对于整个应用程序服务器也是如此 - 还有用户和密码。 我怎么能这样做?
编辑: “客户”将使整个应用程序包含Web服务器配置。 (Wilfly和.war - 档案) 它仅用于保存数据库中的软件密钥。 如果“客户”第一次启动Web应用程序,则会提示他输入许可证密钥。 输入许可证密钥后,将调用Webservice。返回码为“false”或“true”(密钥有效或密钥无效) 我的第一个想法是将标志存储在数据库中。但是如果用户可以访问数据库,他可以自己操纵这个标志。 是否有其他可能为“软件密钥有效”设置标志,而不是在数据库中保存标志。 有什么想法吗?
答案 0 :(得分:5)
您可以使用安全域来解决这个问题,Wildfly可能会有一些特定的更改,但对于JBoss 7.1.1,这里是您需要做的。
在JBoss / Widlfy服务器中找到jboss-logging-3.1.0.GA.jar的位置。对于JBoss 7.1.1,它应该是类似于 - modules \ org \ jboss \ logging \ main \ jboss-logging-3.1.0.GA.jar
找到picketbox-4.0.7.Final.jar的位置
检查picketbox jar是否有org.picketbox.datasource.security.SecureIdentityLoginModule类。
从JBoss服务器根文件夹运行以下命令以加密数据源连接密码
java -cp modules \ org \ jboss \ logging \ main \ jboss-logging-3.1.0.GA.jar; modules \ org \ picketbox \ main \ picketbox-4.0.7.Final.jar org.picketbox.datasource .security.SecureIdentityLoginModule PasswordXYZ
获取输出文本,并在standalone.xml中添加以下元素下的安全域:
ConfigureAwait(false)
在数据源元素中使用此安全域,如下所示:
<security-domain name="encrypted-ds-WASM2" cache-type="default">
<authentication>
<login-module code="org.picketbox.datasource.security.SecureIdentityLoginModule" flag="required">
<module-option name="username" value="WASM2"/>
<module-option name="password" value="89471a19022f8af"/>
<module-option name="managedConnectionFactoryName" value="jboss.jca:service=LocalTxCM,name=MySqlDS_Pool"/>
</login-module>
</authentication>
</security-domain>
答案 1 :(得分:0)
这是不可能的。如果Web应用程序必须能够解密密码以使用数据库,则服务器上的任何人都可以执行相同的操作。
如果您想限制访问权限,请将服务器置于您的控制之下,让他们只能通过网络前端访问它。
(即使可以进行有用的加密,如果他们有服务器访问权限,他们可以轻松地将数据库文件复制到他们的工作站上,或者将新的用户帐户添加到数据库服务器中。)