2011-07-21 31 views
5

Sau hai giờ đọc tài liệu, mã nguồn và chuỗi trợ giúp, tôi sẽ từ bỏ. Tôi không thể nhận được psycopg2 để xác thực với một chuỗi md5. Theo chủ đề this tôi không phải làm gì ngoài việc bật md5-auth trong pg_hba.conf.Tôi có thể sử dụng xác thực md5 với psycopg2 không?

Đây là của tôi hiện tại 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 

Và tôi sử dụng psycopg2 như thế này:

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

Mà cho:

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

Đương nhiên, các mật khẩu cho phù hợp với pg_authid. rolpassword.

Theo pg_hba.conf Tôi chỉ có thể đăng nhập bằng md5-auth (phải không?). Tuy nhiên, mật khẩu chưa được giải quyết của tôi hoạt động tốt (và băm không) và tôi không thể tìm thấy bất kỳ tham chiếu nào đến psycopg2 băm nó trong mã nguồn của nó.

Trợ giúp?

Cảm ơn!

Trả lời

5

Psycopg2 is a wrapper around libpq, nghĩa là thư viện ứng dụng khách Postgres đã triển khai thực hiện điều này. Không cần phải băm mật khẩu của bạn. Nó sẽ được băm (bởi libpq) trước khi được gửi qua dây.


Nó đáng chú ý libpq mà thực sự sẽ gửi tổng MD5 mật khẩu của bạn muối với tên người dùng của bạn cũng như tổng MD5 đó MD5 sum muối với một kết nối chia sẻ liên tục (xem the source here). Nhân rộng hành vi đó sẽ đòi hỏi một chút công việc.

+0

Ok, cảm ơn! Vì vậy, tôi đoán nó không thể xác thực với một chuỗi md5? – Martijn

+0

Ngay nếu bạn nhập mã băm MD5 của mật khẩu, libpq sẽ tính giá trị băm MD5 của băm đó và gửi nó dọc theo dây. Ngoài ra, hãy xem chỉnh sửa của tôi ở trên. – ig0774

Các vấn đề liên quan