#ruby #authentication #encryption #devise #ruby-on-rails-3.2
#ruby #аутентификация #шифрование #разработать #ruby-on-rails-3.2
Вопрос:
Справочная информация: В настоящее время у нас есть приложение Rails, которое использует Devise amp; LDAP для аутентификации. Пользователи просто вводят своего пользователя и пароль для входа в систему и устанавливают сеанс через браузер. Поскольку мы используем LDAP, нам не нужно (или не хочется) хранить пароли в нашем приложении Rails. Это отлично работает. У нас также есть утилита командной строки Ruby, которая имеет ограниченную функциональность и в основном используется для автоматизации серверной части, но пользователи могут использовать клиентский интерфейс командной строки для выполнения определенных действий в нашем приложении. Теперь мы хотим добавить аутентификацию к нашему Ruby-клиенту (поддерживается в Windows и Linux).
Итак, каков наилучший способ отправить пароль пользователя в наше приложение Rails для аутентификации? Проблема в том, что мы не хотим, чтобы пользователи вводили свои пароли открытым текстом в командной строке (по разным причинам).
Предложение: Я думал об использовании openssl для создания утилиты в нашем Ruby-клиенте, которая позволяет пользователям хранить и шифровать свои пароли (возможно, с другой конфигурационной информацией) в локальном зашифрованном файле. Затем наш Ruby-клиент мог бы отправлять этот зашифрованный файл конфигурации при всех вызовах HTTPS в наше приложение Rails. На стороне Rails мы могли бы расшифровать файл, извлечь пароль и аутентифицировать пользователя через Devise LDAP, прежде чем разрешить запрошенное действие.
Я могу вспомнить несколько подводных камней с этим дизайном и любопытно, есть ли у кого-нибудь лучшее решение или совет?
Примечание: Это внутренний инструмент, поэтому нам не нужно быть параноиком в отношении безопасности, в то же время мы не хотим, чтобы кто-либо получал пароль чужой корпорации. В идеале это решение также должно препятствовать тому, чтобы кто-либо из наших разработчиков приложений мог получить доступ к паролям пользователей.
Комментарии:
1. Итак, вы спрашиваете о передаче или о том, как сохранить учетные данные на стороне клиента? На какой платформе?
2. Наш клиент поддерживается в Windows и Linux. Согласно приведенному выше, мне любопытно, является ли мое текущее предложение использовать openssl для хранения паролей в зашифрованных файлах наилучшим подходом.
3. Если пользователю просто нужно отправить файл (который, предположительно, находится где-то на диске), то для меня это попахивает запутыванием. Уверен, что пользователь не может извлечь пароли из файла, но им это и не нужно, потому что приложение rails делает это за них
Ответ №1:
Я знаю, что этот вопрос довольно старый, но ответ может быть полезен другим.
Я думаю, что openssl — ваш лучший выбор. Вам не нужно самостоятельно создавать утилиту для хранения паролей. Возможно, вы можете расширить его, если вам нужно.
В gem уже есть инструмент под названием keybox (созданный Джереми Хинегарднером).
Из rubyforge.org (домашняя страница приложения):
-
Keybox предоставляет 2 приложения командной строки, keybox и kpg
-
keybox: приложение для хранения паролей из командной строки ruby, использующее для шифрования библиотеки OpenSSL, входящие в состав ruby.
-
kpg: реализация программы Automated Password Generator (apg) на чистом ruby. В нем предпринята попытка реализовать все функциональные возможности ‘apg’, но он не полностью совместим.
-
Вы можете найти его по адресу http://keybox.rubyforge.org / с документами на http://www.rubydoc.info/gems/keybox/1.2.1.