2011-07-21 29 views
5

經過兩個小時的閱讀文檔,源代碼和幫助主題,我放棄了。我無法讓psycopg2使用md5字符串進行身份驗證。根據this線程,我不必除了在pg_hba.conf中啓用md5-auth之外的任何內容。我可以在psycopg2上使用md5認證嗎?

這是我目前pg_hba.conf

# TYPE DATABASE USER  CIDR-ADDRESS   METHOD 
local all   all        md5 
host all   all   127.0.0.1/32   md5 
host all   all   ::1/128    md5 
host all   all   0.0.0.0/0    md5 

而且我用psycopg2這樣的:

psycopg2.connect(host='localhost', port=5433, user='me', password='md5xxxx').cursor() 

其中給出:

psycopg2.OperationalError: FATAL: password authentication failed for user "me" 

當然,給定的密碼與pg_authid匹配。 rolpassword。

根據pg_hba.conf我只能使用md5-auth登錄(對吧?)。不過,我的非哈希密碼工作正常(並且哈希不),我無法找到任何引用psycopg2散列它的源代碼。

幫助?

謝謝!

回答

5

Psycopg2 is a wrapper around libpq,即Postgres客戶端庫,它已經實現了這一點。無需亂碼你的密碼。在通過線路發送之前,它將被散列(通過libpq)。


值得一提的是libpq的實際發送您的密碼與用戶名以及與共享連接不變(見the source here)咸認爲MD5總和的MD5和醃製的MD5校驗和。複製這種行爲需要一點工作。

+0

好的,謝謝!所以我想不可能用md5字符串進行身份驗證? – Martijn

+0

如果您傳遞密碼的MD5哈希,libpq會計算該哈希的MD5哈希值並通過線路發送。另請參閱我上面的編輯。 – ig0774

相關問題