Estoy construyendo una API simple con la API de Rails y quiero asegurarme de que estoy en el camino correcto aquí. Estoy usando devise para manejar los inicios de sesión y decidí token_authenticatable
optar por la opción de Devise , que genera una clave de API que debe enviar con cada solicitud.
Estoy emparejando la API con una interfaz de backbone / marionette y generalmente me pregunto cómo debo manejar las sesiones. Mi primer pensamiento fue simplemente almacenar la clave de la API en el almacenamiento local o una cookie, y recuperarla al cargar la página, pero algo sobre almacenar la clave de la API de esa manera me molestó desde el punto de vista de la seguridad. ¿No sería fácil obtener la clave de la API, ya sea buscando en el almacenamiento local / la cookie o olfateando cualquier solicitud que se realice, y usarla para hacerse pasar por ese usuario indefinidamente? Actualmente estoy restableciendo la clave de la API en cada inicio de sesión, pero incluso eso parece frecuente: cada vez que inicias sesión en cualquier dispositivo, eso significa que cerrarás la sesión en todos los demás, lo cual es una especie de molestia. Si pudiera eliminar este reinicio, creo que mejoraría desde el punto de vista de la usabilidad.
Puede que esté totalmente equivocado aquí (y espero estarlo), ¿alguien puede explicar si la autenticación de esta manera es confiable y segura, y si no, cuál sería una buena alternativa? En general, estoy buscando una forma de mantener de forma segura a los usuarios "registrados" en el acceso a la API sin forzar la repetición con frecuencia.
fuente
urlsafe_base64
genera una cadena segura para URL. Todo está en el nombre. A menos que desee usar su token en su URL (lo cual no debería ), usehex
.Según el archivo README del proyecto, la gema devise_token_auth se inspiró en esta publicación de StackOverflow: https://github.com/lynndylanhurley/devise_token_auth
fuente
Puede intentar usar rails4 con su API, está brindando más seguridad y usa devise 3.1.0rc
En Rails 4.0, se han extraído varias características en gemas.
http://blog.envylabs.com/post/41711428227/rails-4-security-for-session-cookies
Devise 3.1.0.rc se ejecuta tanto en Rails 3.2 como en Rails 4.0. http://blog.plataformatec.com.br/2013/08/devise-3-1-now-with-more-secure-defaults/
Devise está obsoleto
TokenAuthenticatable
en 3.1.0rc, pero puede crear su propioTokenAuthenticatable
método para problemas de seguridad. Es más confiable y seguro.Para el token, tienda de sesión, puede ir a http://ruby.railstutorial.org/chapters/sign-in-sign-out y http://blog.bigbinary.com/2013/03/19/cookies-on-rails .html para más comprensible.
Por último, debería pasar por este tipo de cifrado y descifrado " No se puede descifrar los datos cifrados almacenados " para obtener más seguridad.
fuente