[pmg-devel] [PATCH pmg-api 2/3] fix #1946: add verify and cafile options for ldap
Dominik Csapak
d.csapak at proxmox.com
Wed Mar 13 15:17:07 CET 2019
so that users can force the verification, either with the system
installed certificates or with a single explicit file
this also fixes #1944, since the option was 'scheme' not 'schema'
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
PMG/LDAPCache.pm | 14 +++++++++++++-
PMG/LDAPConfig.pm | 13 +++++++++++++
2 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/PMG/LDAPCache.pm b/PMG/LDAPCache.pm
index 0d36019..ca4aec9 100755
--- a/PMG/LDAPCache.pm
+++ b/PMG/LDAPCache.pm
@@ -75,6 +75,8 @@ sub new {
$self->{port} = $args{port};
$self->{groupbasedn} = $args{groupbasedn};
$self->{filter} = $args{filter};
+ $self->{verify} = $args{verify};
+ $self->{cafile} = $args{cafile};
if ($args{syncmode} == 1) {
# read local data only
@@ -349,7 +351,17 @@ sub ldap_connect {
my $opts = { timeout => 10, onerror => 'die' };
$opts->{port} = $self->{port} if $self->{port};
- $opts->{schema} = $self->{mode};
+ if ($self->{mode} eq 'ldaps') {
+ $opts->{scheme} = 'ldaps';
+ $opts->{verify} = 'require' if $self->{verify};
+ if ($self->{cafile}) {
+ $opts->{cafile} = $self->{cafile};
+ } else {
+ $opts->{capath} = '/etc/ssl/certs/';
+ }
+ } else {
+ $opts->{scheme} = 'ldap';
+ }
return Net::LDAP->new($hosts, %$opts);
}
diff --git a/PMG/LDAPConfig.pm b/PMG/LDAPConfig.pm
index 9445205..022749c 100644
--- a/PMG/LDAPConfig.pm
+++ b/PMG/LDAPConfig.pm
@@ -58,6 +58,17 @@ sub properties {
enum => ['ldap', 'ldaps'],
default => 'ldap',
},
+ verify => {
+ description => "Verify server certificate. Only useful with ldaps.",
+ type => 'boolean',
+ default => 0,
+ optional => 1,
+ },
+ cafile => {
+ description => "Path to CA file. Only useful with option 'verify'",
+ type => 'string',
+ optional => 1,
+ },
server1 => {
description => "Server address.",
type => 'string', format => 'address',
@@ -128,6 +139,8 @@ sub options {
accountattr => { optional => 1 },
mailattr => { optional => 1 },
groupclass => { optional => 1 },
+ verify => { optional => 1 },
+ cafile => { optional => 1 },
};
}
--
2.11.0
More information about the pmg-devel
mailing list