Passwords Liberty编码的数据源密码不起作用

Passwords Liberty编码的数据源密码不起作用,passwords,websphere,encode,Passwords,Websphere,Encode,我正在尝试保护Liberty 20.0.0.3 docker映像,但无法获取数据源工作所需的编码密码。纯文本密码工作正常 以下是我迄今为止所尝试的: securityUtility encode --encoding=aes mypa$$word {aes}ADPrOj1GfH/9Am3TSqT7MLN0+sRPkXHUAy7RIk+dbRmZR0fEQTEkzHv1lDTnGhGeaA== 在我的数据源配置中,我有: <dataSource id="DS1" jnd

我正在尝试保护Liberty 20.0.0.3 docker映像,但无法获取数据源工作所需的编码密码。纯文本密码工作正常

以下是我迄今为止所尝试的:

securityUtility encode --encoding=aes mypa$$word
{aes}ADPrOj1GfH/9Am3TSqT7MLN0+sRPkXHUAy7RIk+dbRmZR0fEQTEkzHv1lDTnGhGeaA==
在我的数据源配置中,我有:

<dataSource id="DS1" jndiName="jdbc/DS1" transactional="true">
    <jdbcDriver libraryRef="MSSQL"/>
    <properties.microsoft.sqlserver serverName="myserver" instanceName="myinstance" databaseName="mydatabase" user="myuser" password="{aes}ADPrOj1GfH/9Am3TSqT7MLN0+sRPkXHUAy7RIk+dbRmZR0fEQTEkzHv1lDTnGhGeaA==" />
</dataSource>
然后,我将配置更改为:

<dataSource id="DS1" jndiName="jdbc/DS1" transactional="true">
    <jdbcDriver libraryRef="MSSQL"/>
    <containerAuthData user="myuser" password="{aes}ADPrOj1GfH/9Am3TSqT7MLN0+sRPkXHUAy7RIk+dbRmZR0fEQTEkzHv1lDTnGhGeaA==" />
    <properties.microsoft.sqlserver serverName="myserver" instanceName="myinstance" databaseName="mydatabase" />
</dataSource>
最后,我尝试将密码移动到bootstrap.properties并将其用作属性

bootstrap.properties
pwd={aes}ADPrOj1GfH/9Am3TSqT7MLN0+sRPkXHUAy7RIk+dbRmZR0fEQTEkzHv1lDTnGhGeaA==

<dataSource id="DS1" jndiName="jdbc/DS1" transactional="true">
    <jdbcDriver libraryRef="MSSQL"/>
    <properties.microsoft.sqlserver serverName="myserver" instanceName="myinstance" databaseName="mydatabase" user="myuser" password="${pwd}" />
</dataSource>

### Cause: java.sql.SQLException: Login failed for user 'myuser'. ClientConnectionId:d521779d-9316-4adf-ab61-9118cf66a940 DSRA0010E: SQL State = S0001, Error Code = 18,456
bootstrap.properties
pwd={aes}ADPrOj1GfH/9Am3TSqT7MLN0+sRPkXHUAy7RIk+dbRmZR0fEQTEkzHv1lDTnGhGeaA==
###原因:java.sql.SQLException:用户“myuser”登录失败。客户端连接ID:d521779d-9316-4adf-ab61-9118cf66a940 DSRA0010E:SQL状态=S0001,错误代码=18456
我正在docker容器上运行securityUtility命令,因此不应该存在任何会导致问题的操作系统差异。我的实际密码确实包含一个$字符,但这可能会使它失效吗?我还阅读了应检查代码页兼容性的内容,如何在docker image终端上执行此操作?

根据对于securityUtility命令,某些操作系统需要在提供的参数周围加上单引号。我注意到如果我在Mac上尝试以下操作

./securityUtility encode --encoding=aes mypa$$word
vs

它们产生不同的输出。 而且,当我解码它们时, 前者解码为:

mypa15652word
而后者则解码为

mypa$$word
如果你想知道15652从哪里来,如果我跑

echo $$
在Mac命令提示符下,我返回15652,它看起来是当前进程id


尝试在编码密码时添加单引号,看看这是否有帮助。

是否可以使用XOR等更基本的编码形式?另外,使用AES加密时,您需要在server.xml中设置AES加密密钥,如下所示:
有关详细信息,请参阅此页面:感谢您的回复。不幸的是,没有,尝试了xor也没有乐趣。我还尝试过使用一个密钥,而不是依赖容器生成的默认值,并保存到server.xml和bootstrap.properties,但同样没有成功。干杯!因为我的密码包含$字符,所以生成的编码字符串不正确。通过添加单引号,可以正确解码密码。
mypa15652word
mypa$$word
echo $$