Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hOcNJ-0002a5-So for pgsql-general@arkaria.postgresql.org; Thu, 09 May 2019 06:17:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hOcNI-000655-6u for pgsql-general@arkaria.postgresql.org; Thu, 09 May 2019 06:17:48 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hOcNH-00063y-RA for pgsql-general@lists.postgresql.org; Thu, 09 May 2019 06:17:47 +0000 Received: from hermes.gatewaynet.com ([193.92.121.98]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hOcNF-0006jR-AO for pgsql-general@lists.postgresql.org; Thu, 09 May 2019 06:17:47 +0000 Received: from smadev.internal.net (pc131.internal.net [10.9.200.131]) by hermes.gatewaynet.com (8.15.2/8.15.2/Debian-8) with ESMTPS id x496HbjG011276 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 9 May 2019 09:17:42 +0300 Received: from smadev.internal.net (smadev [10.9.200.131]) by smadev.internal.net (8.15.2/8.15.2) with ESMTP id x496HbZ9088747 for ; Thu, 9 May 2019 09:17:37 +0300 (EEST) (envelope-from achill@matrix.gatewaynet.com) Subject: Re: integrate Postgres Users Authentication with our own LDAP Server To: pgsql-general@lists.postgresql.org References: From: Achilleas Mantzios Message-ID: Date: Thu, 9 May 2019 09:17:37 +0300 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:60.0) Gecko/20100101 Thunderbird/60.3.2 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/alternative; boundary="------------0F51A896817B46FBE26AD884" Content-Language: en-US X-Virus-Scanned: clamav-milter 0.100.3 at hermes X-Virus-Status: Clean X-Spam-Status: No, score=-27.0 required=5.0 tests=ALL_TRUSTED,DYN_HAM_COORD, DYN_HAM_IT,DYN_HAM_NAUTICAL,DYN_HAM_SIGNAT1,HTML_MESSAGE autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on hermes.gatewaynet.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is a multi-part message in MIME format. --------------0F51A896817B46FBE26AD884 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit On 9/5/19 7:51 π.μ., M Tarkeshwar Rao wrote: > > Hi all, > > We would need to integrate Postgres Users Authentication with our own LDAP Server. > > Basically as of now we are able to login to Postgress DB with a user/password credential. > > These user objects are the part of Postgres DB server. Now we want that these users should be authenticated by LDAP server. > > We would want the authentication to be done with LDAP, so basically the user credentials should be store in LDAP server > > Can you mention the prescribed steps in Postgres needed for this integration with LDAP Server? > The users must be existent as postgresql users. Authorization : roles, privileges etc also will be taken by postgresql definitions, grants, etc. But the authentication will be done in LDAP. It is done in pg_hba.conf. There are two ways to do this (with 1 or 2 phases). We have successfully used both Lotus Notes LDAP and FreeIPA LDAP with our production PostgreSQL servers, I have tested with openldap as well, so I guess chances are that it will work with yours. > > Regards > > Tarkeshwar > -- Achilleas Mantzios IT DEV Lead IT DEPT Dynacom Tankers Mgmt --------------0F51A896817B46FBE26AD884 Content-Type: multipart/related; boundary="------------57876BE57441124F8F061048" --------------57876BE57441124F8F061048 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit
On 9/5/19 7:51 π.μ., M Tarkeshwar Rao wrote:

Hi all,

 

We would need to integrate Postgres Users Authentication with our own LDAP Server.  

 

Basically as of now we are able to login to Postgress DB with a user/password credential.

 

These user objects are the part of Postgres DB server. Now we want that these users should be authenticated by LDAP server.

We would want the authentication to be done with LDAP, so basically the user credentials should be store in LDAP server

 

Can you mention the prescribed steps in Postgres needed for this integration with LDAP Server?

The users must be existent as postgresql users. Authorization : roles, privileges etc also will be taken by postgresql definitions, grants, etc. But the authentication will be done in LDAP.
It is done in pg_hba.conf. There are two ways to do this (with 1 or 2 phases). We have successfully used both Lotus Notes LDAP and FreeIPA LDAP with our production PostgreSQL servers, I have tested with openldap as well, so I guess chances are that it will work with yours.

 

Regards

Tarkeshwar



-- 
Achilleas Mantzios
IT DEV Lead
IT DEPT
Dynacom Tankers Mgmt
--------------57876BE57441124F8F061048 Content-Type: image/png; name="image001.png" Content-Transfer-Encoding: base64 Content-ID: Content-Disposition: inline; filename="image001.png" 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 --------------57876BE57441124F8F061048-- --------------0F51A896817B46FBE26AD884--