如何加密 WildFly 数据源密码

在本教程中,我们将学习如何在WildFly数据源中加密数据源密码

步骤 1:生成散列密码

为了做到这一点,我们可以使用一个名为SecureIdentityLoginModule的类,它是PictteBox库的一部分。启动将要加密的文本作为参数传递的类名,如

以下示例:

$ cd $JBOSS_HOME/modules/system/layers/base/org/picketbox/main
$ java -classpath picketbox-5.0.3.Final.jar org.picketbox.datasource.security.SecureIdentityLoginModule postgres
Encoded password: 1d5bcec446b79907df8592078de921bc

现在记下上面的编码密码。

步骤 2:创建安全域

现在,在安全子系统中创建一个安全域,并将其命名为“ds-encrypted”。此安全域将基于 SecureIdentityLoginModule,该模块将用户名、加密密码和一些选项(如数据库池名称(作为托管连接工厂名称的一部分)作为输入。以下 CLI 命令集将创建 ds 加密的安全域:

/subsystem=security/security-domain=ds-encrypted:add(cache-type="default")
/subsystem=security/security-domain=ds-encrypted/authentication="classic":add()
/subsystem=security/security-domain=ds-encrypted/authentication="classic"/login-module="org.picketbox.datasource.security.SecureIdentityLoginModule":add(code="org.picketbox.datasource.security.SecureIdentityLoginModule",flag="required",module-
options={"username" => "postgres","password" =>"1d5bcec446b79907df8592078de921bc","managedConnectionFactoryName" =>"jboss.jca:service=LocalTxCM,name=java:/PostGreDS"})

生成的 XML(也可以直接包含在服务器配置中,前提是在此之前执行了服务器关闭):

<security-domain name="ds-encrypted" cache-type="default">
    <authentication>
        <login-module code="org.picketbox.datasource.security.SecureIdentityLoginModule" flag="required">
            <module-option name="username" value="postgres"/>
            <module-option name="password" value="1d5bcec446b79907df8592078de921bc"/>
            <module-option name="managedConnectionFactoryName"
        value="jboss.jca:service=LocalTxCM,name=java:/PostGreDS"/>
    </login-module>
    </authentication>
</security-domain>

步骤 3:让您的数据源使用安全域:

现在是时候更新数据源配置,使用 ds 加密的安全域了。为此,您需要首先取消定义与安全域设置不兼容的用户名和密码属性:

batch
/subsystem=datasources/data-source=PostgrePool:undefine-attribute(name=user-name)
/subsystem=datasources/data-source=PostgrePool:undefine-attribute(name=password)
/subsystem=datasources/data-source=PostgrePool:write-attribute(name=security-domain,value=ds-encrypted)
run-batch

下面是生成的数据源配置:

<datasource jndi-name="java:/PostGreDS2" pool-name="PostgrePool2">
    <connection-url>jdbc:postgresql://172.17.0.2/postgres</connection-url>
    <driver>postgres</driver>
    <security>
    <security-domain>ds-encrypted</security-domain>
    </security>
</datasource>

您应该重新加载配置,以便看到上述更改得到反映。接下来,您可以从管理控制台或 CLI 验证连接池是否能够连接到数据库。例:

/subsystem=datasources/data-source=PostgrePool:test-connection-in-pool
{
"outcome" => "success",
"result" => [true]
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shibushi114

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值