Могу ли я использовать аутентификацию md5 с psycopg2? - PullRequest
7 голосов
/ 22 июля 2011

После двух часов чтения документации, исходного кода и веток справки я сдаюсь.Я не могу заставить psycopg2 аутентифицироваться с помощью строки md5.Согласно этой ветке, мне ничего не нужно, кроме включения md5-auth в pg_hba.conf.

Это мой текущий 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.

Справка?

Спасибо!

1 Ответ

7 голосов
/ 22 июля 2011

Psycopg2 - это оболочка для libpq , то есть клиентской библиотеки Postgres, которая уже реализует это.Нет необходимости хешировать ваш пароль.Он будет хеширован (libpq) перед отправкой по сети.


Стоит отметить, что libpq на самом деле отправляет сумму MD5 вашего пароля с вашим именем пользователя, а также сумму MD5 этогоСумма MD5 соленая с общей константой соединения (см. источник здесь ).Воспроизведение этого поведения потребует немного работы.

...