2011-07-21 16 views
5

ドキュメンテーション、ソースコード、ヘルプスレッドを2時間読んだ後、私はあきらめています。 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と一致します。ロールパス。

pg_hba.confによると、私はmd5-auth(右?)を使ってしかログインできません。それでも、私の秘密のパスワードはうまく働いていて、ハッシュされていないので、ソースコードでpsycopg2をハッシュしているとは言いません。

ヘルプ?

ありがとう!

答えて

5

Psycopg2 is a wrapper around libpq、つまりこれを既に実装しているPostgresクライアントライブラリです。パスワードをハッシュする必要はありません。これは、ワイヤで送信される前に(libpqによって)ハッシュされます。


それは(the source hereを参照)のlibpqは、実際にユーザー名だけでなく、共有接続定数で塩漬けそのMD5和のMD5サムを塩漬けパスワードのMD5サムを送信していることは注目に値します。その振る舞いを複製するには少しの作業が必要です。

+0

ありがとうございます!だから私はそれがmd5文字列で認証することはできないと思いますか? – Martijn

+0

あなたのパスワードのMD5ハッシュを渡すと、libpqはそのハッシュのMD5ハッシュを計算し、それをワイヤー上で送信します。上記の私の編集を参照してください。 – ig0774

関連する問題