Redmine.pm不适用于Authen :: Simple :: LDAP

时间:2014-06-05 06:21:56

标签: ldap perl windows-server-2012-r2 redmine

您好我在Windows服务器上使用Bitnami Redmine堆栈。我已将Redmine配置为使用LDAP身份验证,它可以正常运行。现在我想通过Redmine和LDAP进行SVN身份验证。我可以使用Redmine帐户登录,但不能使用LDAP登录。在Apache error.log中出现如下错误:

[Authen::Simple::LDAP] Failed to bind with dn 'REDMINE'. Reason: 'Bad file descriptor'

'REDMINE'是用于LDAP的用户。 这似乎是Redmine.pm中的一个问题,它是用Perl编写的,但我对Perl知之甚少。

我发现Perl-Code的一部分,我认为会导致错误:

my $sthldap = $dbh->prepare(
          "SELECT host,port,tls,account,account_password,base_dn,attr_login from auth_sources WHERE id = ?;"
      );
      $sthldap->execute($auth_source_id);
      while (my @rowldap = $sthldap->fetchrow_array) {
        my $bind_as = $rowldap[3] ? $rowldap[3] : "";
        my $bind_pw = $rowldap[4] ? $rowldap[4] : "";
        if ($bind_as =~ m/\$login/) {
          # replace $login with $redmine_user and use $redmine_pass
          $bind_as =~ s/\$login/$redmine_user/g;
          $bind_pw = $redmine_pass
        }
        my $ldap = Authen::Simple::LDAP->new(
            host    =>      ($rowldap[2] eq "1" || $rowldap[2] eq "t") ? "ldaps://$rowldap[0]:$rowldap[1]" : "ldap://$rowldap[0]",
            port    =>      $rowldap[1],
            basedn  =>      $rowldap[5],
            binddn  =>      $bind_as,
            bindpw  =>      $bind_pw,
            filter  =>      "(".$rowldap[6]."=%s)"
        );
        my $method = $r->method;
        $ret = 1 if ($ldap->authenticate($redmine_user, $redmine_pass) && (($access_mode eq "R" && $permissions =~ /:browse_repository/) || $permissions =~ /:commit_access/));

      }
      $sthldap->finish();
      undef $sthldap;

有没有人能解决这个问题?或者也许是标准Redmine.pm的替代工作?

1 个答案:

答案 0 :(得分:1)

问题是我没有安装" IO :: Socket :: IP"和#34;最新的perl-ldap"通过cpan控制台和strawberry-perl并没有将它包含在安装中。使用以下CMD命令安装后,它工作正常!

> cpan
cpan> install IO::Socket::IP
cpan> install latest perl-ldap