2011-07-21 16 views
5

Después de dos horas de leer la documentación, el código fuente y los hilos de ayuda, me estoy rindiendo. No puedo hacer que psycopg2 se autentique con md5-string. De acuerdo con this hilo no tengo nada más que habilitar md5-auth en pg_hba.conf.¿Puedo usar la autenticación md5 con psycopg2?

Ésta es mi actual 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 

Y uso psycopg2 así:

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

cual da:

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

Naturalmente, la contraseña proporcionada coincide con pg_authid. rolpassword.

De acuerdo con pg_hba.conf Solo puedo iniciar sesión usando md5-auth (¿verdad?). Aún así, mi contraseña no modificada funciona bien (y hash no) y no puedo encontrar ninguna referencia a psycopg2 hashing en su código fuente.

¿Ayuda?

Gracias!

Respuesta

5

Psycopg2 is a wrapper around libpq, es decir, la biblioteca cliente de Postgres, que ya lo implementa. No es necesario que te quite la contraseña. Será hash (por libpq) antes de ser enviado por el cable.


Vale la pena señalar que libpq realmente envía la suma MD5 de su contraseña salada con su nombre de usuario, así como la suma MD5 de esa suma MD5 salada con una constante conexión compartida (ver the source here). Replicar ese comportamiento requeriría un poco de trabajo.

+0

Ok, gracias! ¿Entonces supongo que no es posible autenticarse con una cadena md5? – Martijn

+0

Correcto si pasa el hash MD5 de su contraseña, libpq calculará el hash MD5 de ese hash y lo enviará por el cable. También vea mi edición arriba. – ig0774

Cuestiones relacionadas