Spring Cloud Config Encryption API игнорирует специальные символы в конце

Мы выполнили внешнюю конфигурацию нашего приложения с помощью облачной конфигурации Spring. Мы также используем API шифрования для шифрования паролей в виде обычного текста, прежде чем они попадут в файл свойств yaml.

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

Я использую curl для вызова API -

curl 10.102.82.1:11901/encrypt -d AXIzFDH4XZA=  

по какой-то причине специальные символы в середине обычного текста работают нормально, но если они у вас есть в конце, они игнорируются. Вероятно, этот пароль уже хеширован, но мне все еще любопытно узнать, как с этим бороться.


person Amrut    schedule 26.02.2016    source источник
comment
Вы пробовали curl 10.102.82.1:11901/encrypt -d "AXIzFDH4XZA="?   -  person Gangaraju    schedule 26.02.2016
comment
Шифрование закодированного значения тоже немного странно. Знак = делает его похожим на параметр запроса, что может сбить с толку сервер. Вы должны установить Content-Type на text/plain.   -  person Dave Syer    schedule 26.02.2016
comment
@Gangaraju - Пытался использовать как одинарные, так и двойные кавычки вокруг текста, но не сработало.   -  person Amrut    schedule 26.02.2016
comment
@Dave Sayer - Добавление Content-Type по мере того, как текст / план работает. Это упоминается в документации. Спасибо. Добавлю ответ.   -  person Amrut    schedule 26.02.2016


Ответы (2)


Установите явный Content-Type: text / plain, чтобы убедиться, что curl правильно кодирует данные при наличии специальных символов.

curl -H "Content-Type: text/plain" 10.102.82.1:11901/encrypt -d AXIzFDH4XZA=

Это указано в документации по облачной конфигурации, найдите TIP на странице - http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html#_encryption_and_decryption

person Amrut    schedule 26.02.2016

У меня были проблемы с '}' в пароле, единственный способ обойти это - добавить к паролю префикс {plain}, как показано:

export PASSWORD=$(curl -X POST --data-urlencode "{plain}adfadf%273}*+” http://username:password@localhost:8888/encrypt)

curl http://username:password@localhost:8888/decrypt -d {cipher}$PASSWORD
person user1849140    schedule 13.03.2018