Revision 48c71a4b
Von Moritz Bunkus vor mehr als 5 Jahren hinzugefügt
SL/Auth/LDAP.pm | ||
---|---|---|
32 | 32 |
|
33 | 33 |
return $self->{ldap} if $self->{ldap}; |
34 | 34 |
|
35 |
my $port = $cfg->{port} || 389;
|
|
36 |
$self->{ldap} = Net::LDAP->new($cfg->{host}, 'port' => $port);
|
|
35 |
my $port = $cfg->{port} || 389; |
|
36 |
my $ldap = Net::LDAP->new($cfg->{host}, port => $port, timeout => $cfg->{timeout} || 10);
|
|
37 | 37 |
|
38 |
if (!$self->{ldap}) { |
|
39 |
$main::form->error($main::locale->text('The LDAP server "#1:#2" is unreachable. Please check config/kivitendo.conf.', $cfg->{host}, $port)); |
|
38 |
if (!$ldap) { |
|
39 |
$::lxdebug->warn($main::locale->text('The LDAP server "#1:#2" is unreachable. Please check config/kivitendo.conf.', $cfg->{host}, $port)); |
|
40 |
return undef; |
|
40 | 41 |
} |
41 | 42 |
|
42 | 43 |
if ($cfg->{tls}) { |
43 |
my $mesg = $self->{ldap}->start_tls('verify' => 'none');
|
|
44 |
my $mesg = $ldap->start_tls(verify => $cfg->{verify} // 'require');
|
|
44 | 45 |
if ($mesg->is_error()) { |
45 |
$main::form->error($main::locale->text('The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/kivitendo.conf.')); |
|
46 |
$::lxdebug->warn($main::locale->text('The connection to the LDAP server cannot be encrypted (SSL/TLS startup failure). Please check config/kivitendo.conf.')); |
|
47 |
return undef; |
|
46 | 48 |
} |
47 | 49 |
} |
48 | 50 |
|
49 | 51 |
if ($cfg->{bind_dn}) { |
50 |
my $mesg = $self->{ldap}->bind($cfg->{bind_dn}, 'password' => $cfg->{bind_password});
|
|
52 |
my $mesg = $ldap->bind($cfg->{bind_dn}, 'password' => $cfg->{bind_password});
|
|
51 | 53 |
if ($mesg->is_error()) { |
52 |
$main::form->error($main::locale->text('Binding to the LDAP server as "#1" failed. Please check config/kivitendo.conf.', $cfg->{bind_dn})); |
|
54 |
$::lxdebug->warn($main::locale->text('Binding to the LDAP server as "#1" failed. Please check config/kivitendo.conf.', $cfg->{bind_dn})); |
|
55 |
return undef; |
|
53 | 56 |
} |
54 | 57 |
} |
55 | 58 |
|
59 |
$self->{ldap} = $ldap; |
|
60 |
|
|
56 | 61 |
return $self->{ldap}; |
57 | 62 |
} |
58 | 63 |
|
Auch abrufbar als: Unified diff
Auth: Unterstützung für multiple Authentifizierungsbackends
Über den Parameter "module" kann man nun multiple Backends angeben,
die nacheinander versucht werden, bis ein Erfolg gemeldet wird oder
die Liste durchlaufen wurde.
Zusätzlich kann man LDAP-Module mehrfach angeben. Damit
unterschiedliche Konfigurationen für jede Modulinstanz benutzt werden
können, wurde die Syntax erweitert: für "LDAP:Config-Abschnitts-Name"
wird "[authentication/Config-Abschnitts-Name]" benutzt. Zwecks
Rückwärtskompatibilität sucht "LDAP" ohne Angabe eines Namens nach dem
bisher auch verwendeten Abschnitt "[authentication/ldap]".
Nützlich ist das Ganze z.B., um einen LDAP-Fallback-Server angeben zu
können, der benutzt wird, wenn der Hauptserver nicht erreichbar sein
sollte.