Рекомендуется хранить пароль веб-службы
Сценарий:
- Веб-приложение (RoR 3.2) должно взаимодействовать с удаленным веб-сервисом (SOAP, использующим Savon gem).
- веб-службе требуются имя пользователя и пароль.
- связь-это SOAP, трафик - через VPN (без SSL для SOAP).
- мне нужно сохранить пароль, который мне дает администратор удаленной веб-службы.
- администратор веб-службы требует, чтобы я сохранял пароль безопасным способом.
- Когда мой веб-сервер вызывает веб-службу, которую мне нужно использовать исходный пароль в ясном виде. Bcrypt-лучший способ хранения паролей, но это "один из способов". Я не могу отправить зашифрованный пароль, мне нужен способ расшифровать его, чтобы иметь возможность отправить его в веб-сервис.
Похоже, что это проблема "курицы и яйца".
Есть ли способ надежно хранить пароль и иметь возможность расшифровать его для использования в автоматизированном сервисе?
Есть намек?
2 ответа:
Если зашифрованная информация должна быть отправлена в виде обычного текста, как насчет использования сильного обратимого шифра, это, вероятно, то, что имел в виду администратор веб-службы.
Вы можете добавить другую информацию в виде соли (используя все, что вам хорошо известно и может быть применено алгоритмически, например, имя) перед шифрованием с использованием (например) шифрования AES.
Затем вы можете хранить зашифрованный пароль в выбранном вами месте.
Я бы сохранил этот пароль в переменной окружения (обычный текст, запутанный, не имеет значения), чтобы не помещать его в VCS.
Также чтение безопасно ли хранить пароли в конфигурационных файлах в виде переменных окружения (а не в виде обычного текста)? может помочь.