|
Lines 112-137
sub checkpw_ldap {
Link Here
|
| 112 |
#$debug and $db->debug(5); |
112 |
#$debug and $db->debug(5); |
| 113 |
my $userldapentry; |
113 |
my $userldapentry; |
| 114 |
|
114 |
|
| 115 |
if ( $ldap->{auth_by_bind} ) { |
115 |
if ( $ldap->{auth_by_bind} ) { |
| 116 |
# Perform an anonymous bind |
116 |
my $principal_name; |
| 117 |
my $res = $db->bind; |
117 |
if ( $ldap->{anonymous_bind} ) { |
| 118 |
if ( $res->code ) { |
118 |
|
| 119 |
$debug and warn "Anonymous LDAP bind failed: ". description($res); |
119 |
# Perform an anonymous bind |
| 120 |
return 0; |
120 |
my $res = $db->bind; |
| 121 |
} |
121 |
if ( $res->code ) { |
| 122 |
|
122 |
warn "Anonymous LDAP bind failed: " . description($res); |
| 123 |
# Perform a LDAP search for the given username |
123 |
return 0; |
| 124 |
my $search = search_method($db, $userid) or return 0; # warnings are in the sub |
124 |
} |
| 125 |
$userldapentry = $search->shift_entry; |
|
|
| 126 |
|
125 |
|
| 127 |
# Perform a LDAP bind for the given username using the matched DN |
126 |
# Perform a LDAP search for the given username |
| 128 |
$res = $db->bind( $userldapentry->dn, password => $password ); |
127 |
my $search = search_method( $db, $userid ) |
| 129 |
if ( $res->code ) { |
128 |
or return 0; # warnings are in the sub |
| 130 |
$debug and warn "LDAP bind failed as kohauser $userid: ". description($res); |
129 |
$userldapentry = $search->shift_entry; |
| 131 |
return 0; |
130 |
$principal_name = $userldapentry->dn; |
| 132 |
} |
131 |
} |
|
|
132 |
else { |
| 133 |
$principal_name = $ldap->{principal_name}; |
| 134 |
if ( $principal_name and $principal_name =~ /\%/ ) { |
| 135 |
$principal_name = sprintf( $principal_name, $userid ); |
| 136 |
} |
| 137 |
else { |
| 138 |
$principal_name = $userid; |
| 139 |
} |
| 140 |
} |
| 133 |
|
141 |
|
| 134 |
} else { |
142 |
# Perform a LDAP bind for the given username using the matched DN |
|
|
143 |
my $res = $db->bind( $principal_name, password => $password ); |
| 144 |
if ( $res->code ) { |
| 145 |
warn "LDAP bind failed as kohauser $userid: " . description($res); |
| 146 |
return 0; |
| 147 |
} |
| 148 |
if ( !defined($userldapentry) |
| 149 |
&& ( $config{update} or $config{replicate} ) ) |
| 150 |
{ |
| 151 |
my $search = search_method( $db, $userid ) or return 0; |
| 152 |
$userldapentry = $search->shift_entry; |
| 153 |
} |
| 154 |
} else { |
| 135 |
my $res = ($config{anonymous}) ? $db->bind : $db->bind($ldapname, password=>$ldappassword); |
155 |
my $res = ($config{anonymous}) ? $db->bind : $db->bind($ldapname, password=>$ldappassword); |
| 136 |
if ($res->code) { # connection refused |
156 |
if ($res->code) { # connection refused |
| 137 |
warn "LDAP bind failed as ldapuser " . ($ldapname || '[ANONYMOUS]') . ": " . description($res); |
157 |
warn "LDAP bind failed as ldapuser " . ($ldapname || '[ANONYMOUS]') . ": " . description($res); |
|
Lines 415-420
Example XML stanza for LDAP configuration in KOHA_CONF.
Link Here
|
| 415 |
<update>1</update> <!-- update existing users in Koha database --> |
435 |
<update>1</update> <!-- update existing users in Koha database --> |
| 416 |
<auth_by_bind>0</auth_by_bind> <!-- set to 1 to authenticate by binding instead of |
436 |
<auth_by_bind>0</auth_by_bind> <!-- set to 1 to authenticate by binding instead of |
| 417 |
password comparison, e.g., to use Active Directory --> |
437 |
password comparison, e.g., to use Active Directory --> |
|
|
438 |
<anonymous_bind>0</anonymous_bind> <!-- set to 1 if users should be searched using |
| 439 |
an anonymous bind, even when auth_by_bind is on --> |
| 418 |
<mapping> <!-- match koha SQL field names to your LDAP record field names --> |
440 |
<mapping> <!-- match koha SQL field names to your LDAP record field names --> |
| 419 |
<firstname is="givenname" ></firstname> |
441 |
<firstname is="givenname" ></firstname> |
| 420 |
<surname is="sn" ></surname> |
442 |
<surname is="sn" ></surname> |
| 421 |
- |
|
|