我正在为我的 ruby 应用程序创建一个 API,它基于 HTTP Digest Authentication 对用户进行身份验证。我决定使用 Grape API 库,因为它可以在 ruby 中创建 API 清洁器。Grape 文档指出您可以使用摘要式身份验证,例如:
http_digest({ :realm => 'Test Api', :opaque => 'app secret' }) do |username|
# lookup the user's password here
{ 'user1' => 'password1' }[username]
end
上面的葡萄实现是一个包装器Rack::Auth::Digest::MD5
现在,为了安全起见,我读到,从 RFC 2617 开始,您不需要将密码作为纯文本存储在数据库中,您可以存储用户名的 MD5 摘要:realm:password 并针对它进行身份验证,因此我创建了一个 DataMapper 模型:
class Key
include DataMapper::Resource
property :id, Serial
property :username, String
property :password, String
property :active, Boolean, :default => true
property :created_at, DateTime, :default => DateTime.now
property :updated_at, DateTime
end
现在有了我提供的东西,我不知道如何将这两者联系起来并使其工作。