1

認証が必要な奇妙なLDAP構造を照会しようとしています。このアプリは、REMOTE_USER変数を使用してユーザーを判別します。LDAPディレクトリにアクセスできないため、ログを確認できません。

この構造では、ツリーのサブ部分をクエリする必要があります。これは、LDAPクエリをテストするために作成されたこのPerlスクリプトによって示されます(これは機能し、期待どおりにユーザーのリストを返します)

use Net::LDAP;
use Net::LDAP::Entry;

$ldap = Net::LDAP->new( 'ldapdevel.my.edu.au' ) or die "$@";
$mesg = $ldap->bind( 'uid=binduser,o=my.edu.au', password => 'bindpass' );


if( $mesg->code ) {
               die $mesg->error;
 }

$mesg = $ldap->search( # perform a search
        base   => "o=my.edu.au",
        filter => "cn=devraj"
      );


$mesg->code && die $mesg->error;

foreach $entry ($mesg->entries) { 
             $entry->dump;
}

私のApache構成では、VirtualHostエントリに次のようになっています。これは、Perlスクリプトで説明されているのと同じクエリを模倣することを目的としています。

<Location />

    AuthType Basic
    AuthName "My Application"

    AuthBasicProvider ldap
    AuthzLDAPAuthoritative off
    AuthLDAPBindPassword bindpass

    AuthLDAPBindDN "uid=binduser,o=my.edu.au"
    AuthLDAPUrl "ldap://ldapdevel.my.edu.au/o=my.edu.au?cn?one"

    Require valid-user

</Location>

ApacheがLDAPディレクトリに正常にバインドすることも確認できます。

Apacheエラーログ、LDAP認証のメッセージ。これは、URIが/したがって、Apacheがo = my.edu.auのサブツリーではなく、ディレクトリの先頭を検索していることを示します。

[Tue Sep 04 16:22:01 2012] [notice] Apache/2.2.15 (Unix) DAV/2 mod_wsgi/3.2 Python/2.6.6 configured -- resuming normal operations
[Tue Sep 04 16:22:20 2012] [info] [client xxx.xxx.xxx.xxx] [26064] auth_ldap authenticate: user devraj authentication failed; URI / [User not found][No such object]
[Tue Sep 04 16:22:20 2012] [error] [client xxx.xxx.xxx.xxx] user devraj not found: 

問題はAuthLDAPUrlであることに気付きました。私の質問は、AuthLDAPUrlで何が間違っているのか、または別のディレクティブを使用する必要があるのか​​ということです。

また、次のように、各パラメーターをmod_authz_ldapに個別に構成しようとしました。

<Location />

    AuthType Basic
    AuthName "My LDAP authenticated app"

    AuthzLDAPLogLevel debug

    AuthBasicProvider ldap
    AuthBasicAuthoritative off
    AuthzLDAPAuthoritative off

    AuthzLDAPBindPassword bindpass
    AuthzLDAPBindDN "uid=binduser,o=my.edu.au"

    AuthzLDAPMethod ldap
    AuthzLDAPServer ldapdevel.my.edu.au
    AuthzLDAPUserBase o=my.edu.au
    AuthzLDAPUserKey cn
    AuthzLDAPUserScope base
    AuthLDAPRemoteUserAttribute cn

    Require valid-user

</Location>

これは実際に機能します!しかし...Apacheは、ログインしようとしているユーザーとしてバインドしようとしましたが、明らかに失敗します。バインドユーザーのクレデンシャルを使用してログインすると、認証が渡され、エラーログが抽出されます。

[Fri Sep 07 14:14:27 2012] [error] [client xxx.xxx.xxx.xxx] [15628] bind as cn=devraj,l=X,ou=Students,o=my.edu.au failed: 49
[Fri Sep 07 14:14:27 2012] [error] [client xxx.xxx.xxx.xxx] [15628] basic LDAP authentication of user 'devraj' failed
[Fri Sep 07 14:14:27 2012] [error] [client xxx.xxx.xxx.xxx] access to / failed, reason: verification of user id 'devraj' not configured

御時間ありがとうございます。

4

0 に答える 0