web-dev-qa-db-ja.com

LDAP認証は、Apache2のバインドに応じて500または401で失敗します

RHEL5システムでApacheを介してホストされているSubversionリポジトリのLDAP認証を設定しています。 Active Directoryに対して認証しようとすると、2つの異なる問題が発生します。

<Location /svn/>
Dav svn
SvnParentPath /srv/Subversion
SVNListParentPath On
AuthType Basic
AuthName "Subversion Repository"

AuthBasicProvider ldap

AuthLDAPBindDN "cn=userfoo,ou=Service Accounts,ou=User Accounts,dc=my,dc=example,dc=com"
AuthLDAPBindPassword "mypass"

AuthLDAPUrl "ldap://my.example.com:389/ou=User Accounts,dc=my,dc=example,dc=com?sAMAccountName?sub?(objectClass=user)" NONE

Require valid-user
</Location>

上記の構成を使用すると、基本プロンプトが継続的に表示され、最終的に[キャンセル]を選択する必要があります。これにより、401(認証が必要)が返されます。バインド部分をコメントアウトすると、500(内部サーバーエラー)が返され、認証に失敗しました。

[Mon Nov 02 12:00:00 2009] [warn] [client x.x.x.x] [10744] auth_ldap authenticate: user myuser authentication failed; URI /svn [ldap_search_ext_s() for user failed][Operations error]

Ldapsearchを使用してバインドを実行し、単純な属性をフィルタリングすると、正しく返されます。

ldapsearch -h my.example.com -p 389 -D "cn=userfoo,ou=Service Accounts,ou=User Accounts,dc=my,dc=example,dc=com" -b "ou=User Accounts,dc=my,dc=example,dc=com" -w - "&(objectClass=user)(cn=myuser)" sAMAccountName

残念ながら、私にはシステムのAD部分に対する制御や洞察がなく、RHELサーバーしかありません。ハングアップがここにあることを誰かが知っていますか?

3
Erik

私はもうすぐそこにいたことがわかりました。インスタンスに固有のAuthzLDAPAuthoritative offディレクティブを見逃しただけです。

さらに注意として、リポジトリを識別されたユーザーのみに制限したかったので、認証もファイルでチェーンしました。以下の例:

RedirectMatch ^(/repos)$ $1/
LoadModule dav_svn_module     modules/mod_dav_svn.so
LoadModule authz_svn_module   modules/mod_authz_svn.so

<Location /repos/>
    DAV svn
    SVNParentPath /var/svn/repos
    SVNListParentPath On
    SVNAutoversioning On

    AuthType Basic
    AuthName "Subversion Repository"

    AuthBasicProvider file ldap
    AuthzLDAPAuthoritative off
    AuthLDAPBindDN "OU=Service Accounts,OU=User Accounts,DC=example,DC=com"
    AuthLDAPBindPassword xXxXxXx
    AuthLDAPUrl "ldap://ldap.example.com:389/OU=User Accounts,DC=example,DC=com?sAMAccountName?sub?(objectClass=user)"

    AuthzSVNAccessFile /etc/svn-authn
    SVNIndexXSLT "/styles/svnindexICore.xsl"
    AuthUserFile /etc/svn-auth-file 

    #AuthBasicProvider file ldap
    Require valid-user
</Location>
0
Erik

構成をApache2.2.3上のActiveDirectoryを使用した作業構成と比較すると、違いは次のとおりです。

  • AuthLDAPBindDNに「DOMAIN\sAMAccountName」スタイルのユーザー名を使用しています
  • NONEの後にAuthLDAPURLがありません

これらの提案とは別に、ApacheとActiveDirectoryの間の会話でtcpdumpを実行して、そこで何が発生しているのかを確認することをお勧めします。

1
Evan Anderson

私も同じ問題を抱えていました。 Ubuntuでテストした同じ構成はRHEL5では機能しませんでした。私はポート389から3268に変更することになりました これを読んだ後 そしてそれは私の問題を修正しました。

1
Kieren Dixon

LDAPUrlにより、Apacheはクエリを作成します:&(objectClass=user)(sAMAccountName=myuser)

また、コマンドラインクエリは次のとおりです。&(objectClass=user)(cn=myuser)

どちらが正しいか?コマンドラインテストが正常に機能すると言う場合は、おそらく次のものが必要です。

AuthLDAPUrl "ldap://my.example.com:389/ou=User Accounts,dc=my,dc=example,dc=com?cn?sub?(objectClass=user)" NONE

0
silk

セットアップにSSPI認証を使用したため、LDAPについて知りません。しかし、LDAP構成の詳細が記載されたこれらのページを見つけました。 (まだそれらに到達していない場合に備えて):

http://blogs.open.collab.net/svn/2009/03/Subversion-with-Apache-and-ldap-updated.html

http://www.novell.com/communities/node/5679/installing-and-configuring-Subversion-server-and-Apache2-ldap-authentication-against-edire

Apacheバージョンは構文に違いをもたらすようです。

また、LDAPモジュールがロードされる順序。

0
Critical Skill