Re: User Name Maps seem broken in 11.1 on CentOS 7 - Mailing list pgsql-general

From Adrian Klaver
Subject Re: User Name Maps seem broken in 11.1 on CentOS 7
Date
Msg-id 37efc320-af22-aa11-c68d-ecada155500d@aklaver.com
Whole thread Raw
In response to User Name Maps seem broken in 11.1 on CentOS 7  (Viktor Berke <bviktor@outlook.com>)
Responses Re: User Name Maps seem broken in 11.1 on CentOS 7
List pgsql-general
On 1/29/19 1:11 PM, Viktor Berke wrote:
> Hi,
> 
> After some talk with the helpful folks of #postgresql I see no other 
> option but to ask here. I'm trying to set up proper authentication for 
> our corprorate users. They'll access postgres both from their 
> workstations via TCP, and also locally. Locally, they're authenticated 
> using SSSD which in turn is using LDAP to talk to our Active Directory 
> DCs. That's not very relevant, but I just wanted to explain precisely.
> 
> Anyhow, we try to enforce the "user.name@company.com" login wherever we 
> can, so this is how I set up LDAP auth:
> 
> hostssl all all 10.1.0.1/16 ldap ldapserver=dc2.ad.foobar.com 
> ldapport=636 ldapscheme=ldaps ldaptls=0 
> ldapbinddn="CN=ldap,OU=Helpers,OU=Foobar,DC=ad,DC=foobar,DC=com" 
> ldapbindpasswd=*** ldapsearchattribute=mail 
> ldapbasedn="OU=Users,OU=Foobar,DC=ad,DC=foobar,DC=com"
> 
> This works perfectly fine. I create the role, e.g.:
> 
> CREATE ROLE "jane.doe@foobar.com" CREATEDB CREATEROLE LOGIN;
> 
> Then she can log in fine via pgAdmin or whatever, using her email address.
> 
> Now I want to set up peer authentication locally, so that they don't 
> have to enter their passwords all the time when they're already 
> authenticated to the OS. The idea is that I map the local "jane.doe" OS 
> user to the "jane.doe@foobar.com" role already present in postgres. This 
> way I don't have to CREATE ROLE and manage permissions both for jane.doe 
> and jane.doe@foobar.com. So the map would look something like this, I guess:
> 
> foo /^(.*)$ \1@foobar\.com (or something like that?)
> 
> And here comes the problem: user name maps seem completely 
> non-functional. First I suspected it's a problem with the dot in 
> usernames, but even if I create a local Unix user ("foobar") and set
> 
> local all all peer map=foo
> 
> in pg_hba.conf and
> 
> foo foobar postgres
> 
> In pg_ident.conf, all I see in the log is that
> 
> 2019-01-29 21:44:45.095 CET [41929] LOG:  no match in usermap "foo" for 
> user "foobar" authenticated as "foobar"
> 2019-01-29 21:44:45.095 CET [41929] FATAL:  Peer authentication failed 
> for user "foobar"
> 2019-01-29 21:44:45.095 CET [41929] DETAIL:  Connection matched 
> pg_hba.conf line 79: "local all all peer map=foo"
> 
> Bummer. I also tried various regexes, even the likes of /^(.*)$, but the 
> log ALWAYS says no match. The weird thing is that this is the log 
> content even if there's nothing in pg_ident.conf, so it's like postgres 
> doesn't even care about what's in there.

Is ident_file set to something else?:

https://www.postgresql.org/docs/11/runtime-config-file-locations.html#GUC-IDENT-FILE

> 
> Any ideas?
> 
> Regards,
> 
> Viktor


-- 
Adrian Klaver
adrian.klaver@aklaver.com


pgsql-general by date:

Previous
From: Tim Cross
Date:
Subject: Re: Revoke SQL doesn't take effect
Next
From: Adrian Klaver
Date:
Subject: Re: How to set parameters in 'options'?