2012-06-06 69 views
0

使用Apache mod_auth_basicmod_authn_dbd,您可以通過在數據庫中查找該用戶的密碼來認證用戶。如果密碼保持清晰,我就會看到這種情況,但如果我們使用隨機字符串作爲鹽(也存儲在數據庫中),然後存儲並置的哈希值怎麼辦?Apache基本認證,mod_authn_dbd和密碼鹽

mod_authn_dbd要求您指定一個查詢來選擇該密碼,而不是決定用戶是否通過身份驗證。因此,您不能使用該查詢將用戶提供的密碼與salt連接起來,然後與存儲的散列進行比較。

AuthDBDUserRealmQuery "SELECT password FROM authn WHERE user = %s AND realm = %s" 

有沒有辦法讓這項工作?

回答

0

對於Basic Auth,看看Password Formats,如果使用apr_md5_encode函數完成哈希,我似乎可以完成這項工作。

發現another question與此相關,並鏈接到Java implementation。我用一個小小的改變來實現這個實現來計算我的網站內部數據庫哈希正常的用戶創建流程。在此之後,我可以使用mod_authn_dbd與此查詢:

AuthDBDUserRealmQuery "SELECT CONCAT('$apr1$',password_salt,'$',password_hash) FROM users WHERE user = %s AND realm = %s"