Re: [GENERAL] db_user_namespace, md5 and changing passwords - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: [GENERAL] db_user_namespace, md5 and changing passwords
Date
Msg-id 200811202106.mAKL6nW02434@momjian.us
Whole thread Raw
In response to Re: [GENERAL] db_user_namespace, md5 and changing passwords  (Bruce Momjian <bruce@momjian.us>)
List pgsql-hackers
Bruce Momjian wrote:
> Magnus Hagander wrote:
> > >> Not sure I care enough to dive into what it would actually mean. My
> > >> guess is that it's very uncommon to use db_user_namespace in any of
> > >> these scenarios (in fact I think it's very uncommon to use it at all,
> > >> but even more uncommon in these cases)
> > > 
> > > The documentation changes highlight that we are going to validate for
> > > most external authentications using the server username, so the external
> > > authentication has to be set up to use that server username.  Were the
> > > docs not clear on that?  Do I need a mention of db_user_namespace in the
> > > authentication docs?
> > 
> > AFAICS, the changes only say MD5 doesn't work. I think it should be made
> > more clear.
> > 
> > And yes, it probably makes sense to put it around the authentication
> > docs as well as a warning to people - that's where they'll go looking if
> > something doesn't work.
> 
> OK, documentation updated stating that all authentication has to user
> the server username, and added a mention in the client-auth docs too.

Applied to CVS HEAD.  Not sure if it should be backpatched so I didn't. 
We do have two bug reports for 8.3 but none for earlier releases where
it was also broken.

---------------------------------------------------------------------------


> 
> -- 
>   Bruce Momjian  <bruce@momjian.us>        http://momjian.us
>   EnterpriseDB                             http://enterprisedb.com
> 
>   + If your life is a hard drive, Christ can be your backup. +

> Index: doc/src/sgml/client-auth.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/client-auth.sgml,v
> retrieving revision 1.111
> diff -c -c -r1.111 client-auth.sgml
> *** doc/src/sgml/client-auth.sgml    18 Nov 2008 13:10:20 -0000    1.111
> --- doc/src/sgml/client-auth.sgml    20 Nov 2008 03:56:43 -0000
> ***************
> *** 702,707 ****
> --- 702,709 ----
>       If you are at all concerned about password
>       <quote>sniffing</> attacks then <literal>md5</> is preferred.
>       Plain <literal>password</> should always be avoided if possible.
> +     <literal>md5</> cannot be used with <xref
> +     linkend="guc-db-user-namespace">.
>      </para>
>   
>      <para>
> Index: doc/src/sgml/config.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/config.sgml,v
> retrieving revision 1.195
> diff -c -c -r1.195 config.sgml
> *** doc/src/sgml/config.sgml    11 Nov 2008 02:42:31 -0000    1.195
> --- doc/src/sgml/config.sgml    20 Nov 2008 03:56:44 -0000
> ***************
> *** 706,711 ****
> --- 706,722 ----
>           before the user name is looked up by the server.
>          </para>
>   
> +        <para>
> +         <varname>db_user_namespace</> causes the client's and
> +         server's user name representation to differ.
> +         Authentication checks are always done with the server's user name
> +         so authentication methods must be configured for the
> +         server's user name, not the client's.  Because
> +         <literal>md5</> uses the user name as salt on both the
> +         client and server, <literal>md5</> cannot be used with
> +         <varname>db_user_namespace</>.
> +        </para>
> + 
>          <note>
>           <para>
>            This feature is intended as a temporary measure until a
> Index: src/backend/libpq/auth.c
> ===================================================================
> RCS file: /cvsroot/pgsql/src/backend/libpq/auth.c,v
> retrieving revision 1.171
> diff -c -c -r1.171 auth.c
> *** src/backend/libpq/auth.c    18 Nov 2008 13:10:20 -0000    1.171
> --- src/backend/libpq/auth.c    20 Nov 2008 03:56:44 -0000
> ***************
> *** 371,376 ****
> --- 371,380 ----
>               break;
>   
>           case uaMD5:
> +             if (Db_user_namespace)
> +                 ereport(FATAL,
> +                         (errcode(ERRCODE_INVALID_AUTHORIZATION_SPECIFICATION),
> +                          errmsg("MD5 authentication is not supported when \"db_user_namespace\" is enabled")));
>               sendAuthRequest(port, AUTH_REQ_MD5);
>               status = recv_and_check_password_packet(port);
>               break;
> Index: src/backend/libpq/hba.c
> ===================================================================
> RCS file: /cvsroot/pgsql/src/backend/libpq/hba.c,v
> retrieving revision 1.172
> diff -c -c -r1.172 hba.c
> *** src/backend/libpq/hba.c    28 Oct 2008 12:10:43 -0000    1.172
> --- src/backend/libpq/hba.c    20 Nov 2008 03:56:47 -0000
> ***************
> *** 846,852 ****
> --- 846,861 ----
>       else if (strcmp(token, "reject") == 0)
>           parsedline->auth_method = uaReject;
>       else if (strcmp(token, "md5") == 0)
> +     {
> +         if (Db_user_namespace)
> +         {
> +             ereport(LOG,
> +                     (errcode(ERRCODE_CONFIG_FILE_ERROR),
> +                      errmsg("MD5 authentication is not supported when \"db_user_namespace\" is enabled")));
> +             return false;
> +         }
>           parsedline->auth_method = uaMD5;
> +     }
>       else if (strcmp(token, "pam") == 0)
>   #ifdef USE_PAM
>           parsedline->auth_method = uaPAM;

> 
> -- 
> Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers

--  Bruce Momjian  <bruce@momjian.us>        http://momjian.us EnterpriseDB
http://enterprisedb.com
 + If your life is a hard drive, Christ can be your backup. +


pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Autoconf, libpq and replacement function
Next
From: Magnus Hagander
Date:
Subject: Re: Autoconf, libpq and replacement function