自由编码的数据源密码不起作用
Liberty encoded datasource password not working
我正在尝试保护 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>
给出:
### Cause: java.sql.SQLException: Login failed for user 'myuser'. ClientConnectionId:d521779d-9316-4adf-ab61-9118cf66a940 DSRA0010E: SQL State = S0001, Error Code = 18,456
然后我将配置更改为:
<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>
然后我得到
### Cause: java.sql.SQLException: Login failed for user ''. ClientConnectionId:34a029da-e38a-4d54-a943-9c975009ccba DSRA0010E: SQL State = S0001, Error Code = 18,456
最后,我尝试将密码移至 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
我是 运行 docker 容器上的 securityUtility 命令,因此不应该有任何 OS 会导致问题的差异。我的实际密码确实包含一个 $ 字符,但它会被丢弃吗?我还阅读了应该检查代码页兼容性,如何在 docker 图像终端上执行此操作?
根据 securityUtility 命令的 this knowledge center doc,一些操作系统需要在提供的参数周围加上单引号。我注意到如果我在 Mac、
上尝试以下操作
./securityUtility encode --encoding=aes mypa$$word
对
./securityUtility encode --encoding=aes 'mypa$$word'
它们产生不同的输出。
而且,当我解码它们时,
前者解码为:
mypa15652word
而后者解码为
mypa$$word
如果你想知道 15652 是从哪里来的,如果我 运行
echo $$
在 Mac 命令提示符下,我返回 15652,这看起来是当前进程 ID。
尝试在对密码进行编码时添加单引号,看看是否有帮助。
我正在尝试保护 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>
给出:
### Cause: java.sql.SQLException: Login failed for user 'myuser'. ClientConnectionId:d521779d-9316-4adf-ab61-9118cf66a940 DSRA0010E: SQL State = S0001, Error Code = 18,456
然后我将配置更改为:
<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>
然后我得到
### Cause: java.sql.SQLException: Login failed for user ''. ClientConnectionId:34a029da-e38a-4d54-a943-9c975009ccba DSRA0010E: SQL State = S0001, Error Code = 18,456
最后,我尝试将密码移至 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
我是 运行 docker 容器上的 securityUtility 命令,因此不应该有任何 OS 会导致问题的差异。我的实际密码确实包含一个 $ 字符,但它会被丢弃吗?我还阅读了应该检查代码页兼容性,如何在 docker 图像终端上执行此操作?
根据 securityUtility 命令的 this knowledge center doc,一些操作系统需要在提供的参数周围加上单引号。我注意到如果我在 Mac、
上尝试以下操作./securityUtility encode --encoding=aes mypa$$word
对
./securityUtility encode --encoding=aes 'mypa$$word'
它们产生不同的输出。 而且,当我解码它们时, 前者解码为:
mypa15652word
而后者解码为
mypa$$word
如果你想知道 15652 是从哪里来的,如果我 运行
echo $$
在 Mac 命令提示符下,我返回 15652,这看起来是当前进程 ID。
尝试在对密码进行编码时添加单引号,看看是否有帮助。