Почему в Liberty не работает зашифрованный пароль

Пытаясь заставить контейнер Liberty работать, я столкнулся со следующей проблемой.

Для подключения к базе данных у меня есть такой раздел authData в server.xml:

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

Когда я пытаюсь запустить сервер с незашифрованным паролем, соединение с базой данных работает, как и ожидалось, но когда пароль закодирован, я получаю это сообщение: Отказано в соединении (Отказано в соединении). ERRORCODE=-4499, SQLSTATE=08001 DSRA0010E: состояние SQL = 08001, код ошибки = -4499

Похоже пароль не расшифровывается при настройке подключения, но я не понимаю почему или я что-то упускаю в настройках.


person Anthon    schedule 21.04.2020    source источник
comment
Сомневаюсь что xor шифрование не работает, думаю это просто типо-о с вашей стороны. Можете ли вы сравнить пароль, хорошим инструментом для этого является strelitzia.net/wasXORdecoder/wasXORdecoder.html ?   -  person MrSimpleMind    schedule 21.04.2020
comment
Думаю, проблема может быть в том, что в пароле есть пара спецсимволов, пытаюсь разобраться. Я уже нашел упомянутый вами сайт и расшифровка там дала правильный пароль.   -  person Anthon    schedule 22.04.2020
comment
Если вы используете эмулятор терминала, убедитесь, что ваш сеанс настроен на использование той же кодовой страницы, что и ваш сервер. И помните... поля идентификатора пользователя или пароля должны быть в формате US-ASCII, в противном случае убедитесь, что файл сохранен с использованием кодировки символов UTF-8.   -  person MrSimpleMind    schedule 22.04.2020


Ответы (1)


Кодировка паролей источников данных поддерживается в Liberty и должна работать. Я приведу более полный пример, соответствующий используемому вами стилю конфигурации, а также ссылку на официальный сайт документ центра знаний с собственным примером

Используйте 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/

person njr    schedule 21.04.2020