2011/3/2 Michał Koba <toy...@poczta.fm>

>  Hi
>
>     We are developing application in Microsoft Access linked via ODBC with
> PostgreSQL 8.2 database. The ODBC Data Source is configured to login using
> single user and password for all users logining to our application in MS.
>
>     Now. We need to check out if user that trying to login has valid user
> and password in PostgreSQL database. We are asking tables pg_authid and/or
> pg_shadow for user names and passwords. Passwords in those tables are stored
> in md5. We have following statement to compare password hash with password
> typed by user:
>
> SELECT 1
> FROM pg_authid
> WHERE rolename='<typed_user_name>'
>   AND rolpassword='md5'||md5('<typed_user_password>');
>
>     But hash generated this way is different than password hash stored in
> pg_authid.
>
>     What we are doing wrong ? Is there any possibility to checkout
> passwords in pg_authid table ?
>
> P.S. Sorry for my awfull english.
>
>
s/rolename/rolname/

The password isn't hashed on its own; it's salted with the username, so
you'd really want:

rolpassword = 'md5' || md5('password' || rolname);

-- 
Thom Brown
Twitter: @darkixion
IRC (freenode): dark_ixion
Registered Linux user: #516935

Reply via email to