【问题标题】:Why does an encoded password not work in Liberty为什么编码密码在 Liberty 中不起作用
【发布时间】:2020-04-21 23:06:38
【问题描述】:

在尝试让 Liberty 容器工作时,我遇到了以下问题。

对于数据库连接,我在 server.xml 中有一个这样的 authData 部分:

<authData id="datasourceAuth" user="test" password="{xor}ABCD"/>

当我尝试使用未编码的密码运行服务器时,数据库连接按预期工作,但是当密码被编码时,我收到以下消息:连接被拒绝(连接被拒绝)。 ERRORCODE=-4499,SQLSTATE=08001 DSRA0010E: SQL 状态 = 08001,错误代码 = -4,499

在设置连接时密码似乎没有被解码,但我不明白为什么或者我是否在配置中遗漏了什么。

【问题讨论】:

  • 我怀疑异或加密不起作用,我认为这只是您这边的一种类型。你能比较一下密码吗,一个很好的工具是strelitzia.net/wasXORdecoder/wasXORdecoder.html
  • 我认为问题可能是密码中有几个特殊字符,我正在努力解决。我已经找到了你提到的网站,在那里解码得到了正确的密码。
  • 发现问题,是把密码粘贴到iTerm2中。请参阅此链接,解决方案的底部答案:stackoverflow.com/questions/25614613/…
  • 如果您使用终端模拟器,请确保您的会话配置为使用与服务器相同的代码页。请记住...用户 ID 或密码字段必须为 US-ASCII,否则请确保使用 UTF-8 字符编码保存文件。

标签: websphere-liberty open-liberty


【解决方案1】:

Liberty 支持数据源密码的编码并且应该可以正常工作。我将提供一个与您使用的配置风格一致的更完整示例,以及对官方knowledge center doc 的引用及其自己的示例

使用securityUtility对密码进行编码,

securityUtility encode --encoding=xor test123

输出:

{xor}KzosK25tbA==

在 authData 上配置值并在数据源上使用 authData,

<authData id="datasourceAuth" user="test" password="{xor}KzosK25tbA=="/>
<dataSource id="testdb" jndiName="jdbc/testdb" containerAuthDataRef="datasourceAuth">
  <jdbcDriver libraryRef="db2jcc"/>
  <properties.db2.jcc databaseName="TESTDB" serverName="localhost" portNumber="50000"/>
</dataSource>

将资源引用与容器身份验证一起使用时,将应用身份验证数据。

我建议您返回并再次尝试所有步骤,以排除拼写错误或复制/粘贴错误的可能性。如果它仍然不起作用,请在此处提出针对 OpenLiberty 的案例, https://github.com/OpenLiberty/open-liberty/issues/new/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    相关资源
    最近更新 更多