2

Windows Server で Bitnami Redmine Stack を使用しています。LDAP 認証を使用するように Redmine を構成しましたが、動作します。Redmine と LDAP を介して SVN 認証を行いたいと思います。Redmine アカウントではログインできますが、LDAP ではログインできません。Apache の error.log には、次のようなエラーが記録されていました。

[Authen::Simple::LDAP] dn 'REDMINE' とのバインドに失敗しました。理由: 「不正なファイル記述子」

「REDMINE」は、LDAP に使用されるユーザーです。Perlで書かれたRedmine.pmの問題のようですが、Perlについてはよくわかりません。

エラーの原因と思われる Perl コードの一部を見つけました。

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 に代わる実用的なものでしょうか?

4

1 に答える 1

1

問題は、cpan コンソール経由で「IO::Socket::IP」と「最新の perl-ldap」をインストールしておらず、strawberry-perl がインストールに含まれていないことでした。次のCMDコマンドでこれらをインストールした後、うまくいきました!

> cpan
cpan> install IO::Socket::IP
cpan> install latest perl-ldap
于 2014-06-05T11:39:25.867 に答える