{"id":12175,"date":"2018-12-21T14:52:31","date_gmt":"2018-12-21T13:52:31","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/"},"modified":"2023-06-09T17:20:25","modified_gmt":"2023-06-09T15:20:25","slug":"pam-authentication-with-postgresql","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/","title":{"rendered":"PAM Authentication With PostgreSQL"},"content":{"rendered":"<p><strong>By Mouhamadou Diaw<\/strong><\/p>\n<p>PostgreSQl supports many authentication methods. The PAM authentication method operates similarly to password except that it uses PAM (Pluggable Authentication Modules) as the authentication mechanism. The user must exist in the database before PAM can be used for authentication.<br \/>\nIn this blog I will configure PAM authentication for a PostgreSQL cluster 11 running on a centos 7.<\/p>\n<div>\n<div id=\"highlighter_673102\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">postgres=# <\/code><code class=\"sql keyword\">select<\/code> <code class=\"sql plain\">version();<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">version<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql comments\">--------------------------------------------------------------------------------<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql comments\">-------------------------<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">PostgreSQL 11.1 <\/code><code class=\"sql keyword\">on<\/code> <code class=\"sql plain\">x86_64-pc-linux-gnu, compiled <\/code><code class=\"sql keyword\">by<\/code> <code class=\"sql plain\">gcc (GCC) 4.8.5 20150623 (R<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql plain\">ed Hat 4.8.5-28), 64-<\/code><code class=\"sql keyword\">bit<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql plain\">(1 row)<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql plain\">postgres=#<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql plain\">[root@dbi-pg-essentials ~]# cat \/etc\/centos-release<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"sql plain\">CentOS Linux release 7.3.1611 (Core)<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql plain\">[root@dbi-pg-essentials ~]# hostname<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"sql plain\">dbi-pg-essentials<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>We suppose that PostgreSQL is already installed with the PAM module. This should be the case if the installation was done with yum. If you decide to install using the sources, be sure to configure with the option \u2013with-pam<br \/>\nWith the installation this should exist a service named postgresql in the \/etc\/pam.d directory. If not you have to create a service for postgresql.<\/p>\n<div>\n<div id=\"highlighter_738540\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[postgres@dbi-pg-essentials pam.d]<\/code><code class=\"bash comments\"># pwd<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">\/etc\/pam<\/code><code class=\"bash plain\">.d<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">[root@dbi-pg-essentials pam.d]<\/code><code class=\"bash comments\"># ls -l postgresql<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">-rw-r--r--. 1 root root 71 Nov\u00a0 7 12:37 postgresql<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">[root@dbi-pg-essentials pam.d]<\/code><code class=\"bash comments\">#<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The first step is then to configure PostgreSQL to accept PAM authentication. Like other authentication methods, we have to add the corresponding entries in the pg_hba.conf file<\/p>\n<div>\n<div id=\"highlighter_447918\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[postgres@dbi-pg-essentials data]$ <\/code><code class=\"bash functions\">grep<\/code> <code class=\"bash plain\">pamservice pg_hba.conf<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">host\u00a0\u00a0\u00a0 all\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 all\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 192.168.22.0<\/code><code class=\"bash plain\">\/24<\/code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <code class=\"bash plain\">pam pamservice=postgresql<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">[postgres@dbi-pg-essentials data]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>We can note the option pamservice=postgresql. Don\u2019t forget to reload or to restart your cluster after modifying the pg_hba.conf file.<br \/>\nIn my case I also had to change the permissions of \/etc\/shadow file to following<\/p>\n<div>\n<div id=\"highlighter_777565\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[postgres@dbi-pg-essentials data]$ <\/code><code class=\"bash functions\">ls<\/code> <code class=\"bash plain\">-l <\/code><code class=\"bash plain\">\/etc\/shadow<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">-r--r--r-- 1 root root 988 Dec 21 11:20 <\/code><code class=\"bash plain\">\/etc\/shadow<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">[postgres@dbi-pg-essentials data]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>And the configuration is done. For the test let\u2019s create a linux user named for example usrpam in the server<\/p>\n<div>\n<div id=\"highlighter_596673\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[root@dbi-pg-essentials ~]<\/code><code class=\"bash comments\"># useradd -m usrpam<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">[root@dbi-pg-essentials ~]<\/code><code class=\"bash comments\"># passwd usrpam<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">Changing password <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">user usrpam.<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">New password:<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">BAD PASSWORD: The password is shorter than 8 characters<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">Retype new password:<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash functions\">passwd<\/code><code class=\"bash plain\">: all authentication tokens updated successfully.<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">[root@dbi-pg-essentials ~]<\/code><code class=\"bash comments\">#<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>As specified earlier, the user should exist in the database before PAM authentication can be used. So let\u2019s create the same user in PostgreSQL but without password<\/p>\n<div>\n<div id=\"highlighter_282997\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">postgres=# <\/code><code class=\"sql keyword\">create<\/code> <code class=\"sql color2\">user<\/code> <code class=\"sql plain\">usrpam <\/code><code class=\"sql keyword\">with<\/code> <code class=\"sql plain\">login;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql keyword\">CREATE<\/code> <code class=\"sql plain\">ROLE<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">postgres=#<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>And now the usrpam should be able to connect from any client in the network 192.168.22.0.<\/p>\n<div>\n<div id=\"highlighter_392912\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[usr2@dbi-pg-essentials_2 ~]$\u00a0 psql -h dbi-pg-essentials -U usrpam -d postgres\u00a0 <\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">Password <\/code><code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">user usrpam:<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">psql (11.1)<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">Type <\/code><code class=\"bash string\">\"help\"<\/code> <code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">help.<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">postgres=&gt; <\/code><code class=\"bash functions\">select<\/code> <code class=\"bash plain\">user;<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash spaces\">\u00a0\u00a0<\/code><code class=\"bash plain\">user<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">--------<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash spaces\">\u00a0<\/code><code class=\"bash plain\">usrpam<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">(1 row)<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash plain\">postgres=&gt;<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>By Mouhamadou Diaw PostgreSQl supports many authentication methods. The PAM authentication method operates similarly to password except that it uses PAM (Pluggable Authentication Modules) as the authentication mechanism. The user must exist in the database before PAM can be used for authentication. In this blog I will configure PAM authentication for a PostgreSQL cluster 11 [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,83],"tags":[1527,77,1323],"type_dbi":[],"class_list":["post-12175","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-postgresql","tag-authentication-pam","tag-postgresql","tag-postgresql-11"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>PAM Authentication With PostgreSQL - dbi Blog<\/title>\n<meta name=\"description\" content=\"postgreSQL, PostgreSQL 11, Authentication PAM\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PAM Authentication With PostgreSQL\" \/>\n<meta property=\"og:description\" content=\"postgreSQL, PostgreSQL 11, Authentication PAM\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-21T13:52:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-09T15:20:25+00:00\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"PAM Authentication With PostgreSQL\",\"datePublished\":\"2018-12-21T13:52:31+00:00\",\"dateModified\":\"2023-06-09T15:20:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/\"},\"wordCount\":260,\"commentCount\":0,\"keywords\":[\"Authentication PAM\",\"PostgreSQL\",\"PostgreSQL 11\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"PostgreSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/\",\"name\":\"PAM Authentication With PostgreSQL - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2018-12-21T13:52:31+00:00\",\"dateModified\":\"2023-06-09T15:20:25+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"description\":\"postgreSQL, PostgreSQL 11, Authentication PAM\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PAM Authentication With PostgreSQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"PAM Authentication With PostgreSQL - dbi Blog","description":"postgreSQL, PostgreSQL 11, Authentication PAM","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/","og_locale":"en_US","og_type":"article","og_title":"PAM Authentication With PostgreSQL","og_description":"postgreSQL, PostgreSQL 11, Authentication PAM","og_url":"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/","og_site_name":"dbi Blog","article_published_time":"2018-12-21T13:52:31+00:00","article_modified_time":"2023-06-09T15:20:25+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"PAM Authentication With PostgreSQL","datePublished":"2018-12-21T13:52:31+00:00","dateModified":"2023-06-09T15:20:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/"},"wordCount":260,"commentCount":0,"keywords":["Authentication PAM","PostgreSQL","PostgreSQL 11"],"articleSection":["Database Administration &amp; Monitoring","PostgreSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/","url":"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/","name":"PAM Authentication With PostgreSQL - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2018-12-21T13:52:31+00:00","dateModified":"2023-06-09T15:20:25+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"description":"postgreSQL, PostgreSQL 11, Authentication PAM","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/pam-authentication-with-postgresql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"PAM Authentication With PostgreSQL"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=12175"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12175\/revisions"}],"predecessor-version":[{"id":25797,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/12175\/revisions\/25797"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=12175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=12175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=12175"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=12175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}