使用encrypted_pa​​ssword和devise_token_auth登录

时间:2016-05-04 14:49:45

标签: ruby-on-rails devise

我有一个使用devise和devise_token_auth的Rails 4.X应用程序。我想在调用此应用程序时加密电子邮件和密码。

这是服务器端代码:

user.rb

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  include DeviseTokenAuth::Concerns::User

的Gemfile

gem 'devise'
gem 'devise_token_auth'
gem 'omniauth'

这是我的卷曲电话(明文用户名和密码)

curl -v -H 'Content-Type: application/json' -H 'Accept: application/json' -X POST http://localhost:3000/api/auth/sign_in -d "{\"email\":\"user@gmail.com\",\"password\":\"aaaaaaa"}"

我知道我可以使用https来保护初始通话。但是有没有其他方法来加密用户名和密码(不使用https)? 谢谢!

1 个答案:

答案 0 :(得分:1)

您可以按照challenge-response authentication中的规定实施RFC 7616。这将在明文通道上充分保护密码。但是,这种方法本质上倾向于man-in-the-middle attacks。另一个问题是这种方法依赖于共享密钥,这会损害服务器端密码的安全存储。

我的建议是使用RFC 7617中通过安全通道(即https)指定的基本身份验证方案。这相对容易实施和建立实践。