Я создаю простой api с Rails API и хочу убедиться, что здесь я на правильном пути. Я использую devise для обработки логинов и решил использовать token_authenticatable
опцию Devise , которая генерирует ключ API, который вам нужно отправлять с каждым запросом.
Я соединяю API с интерфейсом backbone / marionette и обычно задаюсь вопросом, как мне обрабатывать сеансы. Моя первая мысль заключалась в том, чтобы просто сохранить ключ api в локальном хранилище или файле cookie и получить его при загрузке страницы, но что-то в хранении ключа api таким образом беспокоило меня с точки зрения безопасности. Было бы нелегко получить ключ api, просмотрев локальное хранилище / файл cookie или проанализировав любой запрос, который проходит, и использовать его для бессрочного олицетворения этого пользователя? В настоящее время я сбрасываю ключ api при каждом входе в систему, но даже это кажется частым - каждый раз, когда вы входите в систему на любом устройстве, это означает, что вы выходите из системы на каждом другом, что является своего рода болью. Если бы я мог отказаться от этого сброса, я чувствую, что он улучшился бы с точки зрения удобства использования.
Я могу быть здесь совершенно неправ (и надеюсь, что ошибаюсь), может ли кто-нибудь объяснить, является ли аутентификация таким способом надежно безопасным, и если нет, то какой будет хорошая альтернатива? В целом, я ищу способ, которым я могу безопасно сохранить пользователей, которые «вошли в систему» для доступа к API, без частой повторной авторизации.
источник
urlsafe_base64
генерирует строку, безопасную для URL. Все дело в названии. Если вы не хотите использовать свой токен в своем URL-адресе ( чего не следует делать ), используйтеhex
.Согласно README проекта, гем devise_token_auth был вдохновлен этим сообщением StackOverflow: https://github.com/lynndylanhurley/devise_token_auth
источник
Вы можете попробовать использовать rails4 со своим API, он обеспечивает большую безопасность и использует devise 3.1.0rc
В Rails 4.0 некоторые функции были перенесены в драгоценные камни.
http://blog.envylabs.com/post/41711428227/rails-4-security-for-session-cookies
Devise 3.1.0.rc работает как на Rails 3.2, так и на Rails 4.0. http://blog.plataformatec.com.br/2013/08/devise-3-1-now-with-more-secure-defaults/
Devise является устаревшим
TokenAuthenticatable
в версии 3.1.0rc, но вы можете создать свой собственныйTokenAuthenticatable
метод для решения проблем безопасности. Это надежнее и безопаснее.Для токена, хранилища сеансов вы можете пройти через http://ruby.railstutorial.org/chapters/sign-in-sign-out и http://blog.bigbinary.com/2013/03/19/cookies-on-rails .html для более стабильной работы.
Наконец, вы должны пройти через такое шифрование и дешифрование « Невозможно расшифровать сохраненные зашифрованные данные », чтобы получить большую безопасность.
источник