Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 48c71a4b

Von Moritz Bunkus vor mehr als 5 Jahren hinzugefügt

  • ID 48c71a4b51f5359a7ab7e9bc51280baf9bc9b9b2
  • Vorgänger 4d015385
  • Nachfolger e6795d92

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.

Unterschiede anzeigen:

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