mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Fix handling of HBA ldapserver with multiple hostnames.
Commit 35c0754f failed to handle space-separated lists of alternative
hostnames in ldapserver, when building a URI for ldap_initialize()
(OpenLDAP).  Such lists need to be expanded to space-separated URIs.
Repair.  Back-patch to 11, to fix bug report #15495.
Author: Thomas Munro
Reported-by: Renaud Navarro
Discussion: https://postgr.es/m/15495-2c39fc196c95cd72%40postgresql.org
			
			
This commit is contained in:
		@@ -6,7 +6,7 @@ use Test::More;
 | 
			
		||||
 | 
			
		||||
if ($ENV{with_ldap} eq 'yes')
 | 
			
		||||
{
 | 
			
		||||
	plan tests => 19;
 | 
			
		||||
	plan tests => 22;
 | 
			
		||||
}
 | 
			
		||||
else
 | 
			
		||||
{
 | 
			
		||||
@@ -179,6 +179,22 @@ test_access($node, 'test1', 2,
 | 
			
		||||
$ENV{"PGPASSWORD"} = 'secret1';
 | 
			
		||||
test_access($node, 'test1', 0, 'search+bind authentication succeeds');
 | 
			
		||||
 | 
			
		||||
note "multiple servers";
 | 
			
		||||
 | 
			
		||||
unlink($node->data_dir . '/pg_hba.conf');
 | 
			
		||||
$node->append_conf('pg_hba.conf',
 | 
			
		||||
	qq{local all all ldap ldapserver="$ldap_server $ldap_server" ldapport=$ldap_port ldapbasedn="$ldap_basedn"}
 | 
			
		||||
);
 | 
			
		||||
$node->restart;
 | 
			
		||||
 | 
			
		||||
$ENV{"PGPASSWORD"} = 'wrong';
 | 
			
		||||
test_access($node, 'test0', 2,
 | 
			
		||||
	'search+bind authentication fails if user not found in LDAP');
 | 
			
		||||
test_access($node, 'test1', 2,
 | 
			
		||||
	'search+bind authentication fails with wrong password');
 | 
			
		||||
$ENV{"PGPASSWORD"} = 'secret1';
 | 
			
		||||
test_access($node, 'test1', 0, 'search+bind authentication succeeds');
 | 
			
		||||
 | 
			
		||||
note "LDAP URLs";
 | 
			
		||||
 | 
			
		||||
unlink($node->data_dir . '/pg_hba.conf');
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user