我正在爲基於HTTP摘要驗證的用戶驗證用戶的ruby應用程序創建一個API。我決定使用Grape API庫,因爲它使得在Ruby中創建一個API清理器。葡萄文檔指出您可以使用摘要式身份驗證,如:葡萄API和HTTP摘要驗證
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摘要數據庫明文:境界:密碼和authticate對抗,所以我創建了一個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
現在用我提供什麼,我失去了對如何連接這些t我並讓它工作。
環顧四周後[機架文摘MD5(https://github.com/rack/rack/blob/master/lib/rack/auth/digest/md5.rb)我想通了,如果'attr_writer:passwords_hashed'設置爲「真」,那麼它將接受格式爲'username:realm:password'的已經哈希密碼,這很好,但即時通過Grape API封裝器設置該屬性有困難。有什麼建議麼? – ny95 2013-04-05 14:16:08
通過查看葡萄碼,您可以將哈希提供給':realm'符號,其中包含':realm,:opaque,:passwords_hashed'鍵。 。 。沒有記錄或在葡萄測試,所以有點後門你想要的。我測試了它,但它對我沒有用。 – 2013-04-05 15:03:29
我想去嘗試一下,看看會發生什麼,對於不透明的值,它是什麼意思,我可以將它設置爲「SecureRandom.hex(15)」嗎? – ny95 2013-04-05 15:10:57