Subversion:Apache mod_ldap - 最初の認証に30秒

SubversionサーバーのApacheへのインストール(mod_ldapおよびmod_authnz_ldap)、およびMicrosoft Active DirectoryへのLDAP接続に関して問題があります。 Collabnet Subversion EDGEを搭載したCentOS 5 64ビットシステムを使用しています。

問題は私のLDAPへの接続です、なぜならそれはちょうど30秒の最初の認証に必要だからです。

これがログファイルの断片です。

myLdapUser を使用した最初の認証

==> /opt/csvn/data/logs/error_2012_04_24.log <==
[Tue Apr 24 10:42:00 2012] [debug] mod_authnz_ldap.c(403): [client xx.xx.xx.xx] [3122] auth_ldap authenticate: using URL ldap://10.10.10.11/DC=mycompany,DC=com?sAMAccountName?sub

==> /opt/csvn/data/logs/access_2012_04_24.log <==
xx.xx.xx.xx - myLdapUser [24/Apr/2012:10:42:00 +0200] "GET /svn/ HTTP/1.1" 200 132

==> /opt/csvn/data/logs/error_2012_04_24.log <==
[Tue Apr 24 10:42:30 2012] [debug] mod_authnz_ldap.c(518): [client xx.xx.xx.xx] [3122] auth_ldap authenticate: accepting myLdapUser
[Tue Apr 24 10:42:30 2012] [info] [client xx.xx.xx.xx] Access granted: 'myLdapUser' GET (null)

ご覧のとおり、LDAP URLと承認済み認証を使用した場合、30秒のタイムギャップがあります。 最初の低速だが成功した認証の後にページをリロードしますか?すべてが1秒で完了します、このログファイルの断片を見てください:

==> /opt/csvn/data/logs/access_2012_04_24.log <==
xx.xx.xx.xx - myLdapUser [24/Apr/2012:10:42:51 +0200] "GET /svn/ HTTP/1.1" 200 132

==> /opt/csvn/data/logs/error_2012_04_24.log <==
[Tue Apr 24 10:42:51 2012] [debug] mod_authnz_ldap.c(403): [client xx.xx.xx.xx] [3123] auth_ldap authenticate: using URL ldap://10.10.10.11/DC=mycompany,DC=com?sAMAccountName?sub
[Tue Apr 24 10:42:51 2012] [debug] mod_authnz_ldap.c(518): [client xx.xx.xx.xx] [3123] auth_ldap authenticate: accepting myLdapUser
[Tue Apr 24 10:42:51 2012] [info] [client xx.xx.xx.xx] Access granted: 'myLdapUser' GET (null)

LDAPサーバーを見てみましょう。最初に正常にバインドされ、次に非常に高速に検索要求が行われ、ユーザー「myLdapUser」の全値を含む検索要求エントリーが取得されます。検索要求エントリのユーザー情報を使用してActive Directoryを再度呼び出し、その後、ユーザーは受け入れられます。

誰が何がうまくいっているかという考えがありますか。

I also post this question here, but it is not a subversion problem, it is related to Apache and mod_ldap, so I think I won't get help there: http://subversion.open.collab.net/ds/viewMessage.do?dsForumId=3&dsMessageId=417998

1
ru de

4 答え

完全を期すために、ログスニペットだけでなく、実際のmod_authz_ldap設定ディレクティブを投稿する必要があります。私にとって、これはApacheとADの間のどこかにあるDNSの問題のように聞こえますが、それ以上の情報がないと確信できません。

たとえばCentOSマシンの ldapsearch を使用して手動で認証を試行し、そこで問題を再現できるかどうかを確認してください。何かのようなもの:

ldapsearch -xLLLZ -D sAMAccountName=myLdapUSer,dc=mycompany,dc=com -W \
 -b dc=mycompany,dc=com -H ldap://10.10.10.11
4
追加された
これらの設定ディレクティブはどこにありますか?私はそれを手動でしました、そして結果は有効なユーザーとパスワードを持つものです(バインドはサーバーに接続できるユーザーで行われ、その後私は単一のユーザーのためにユーザー名/パスワードを取ります):ʻldap_start_tls:Server is使用不可(52)追加情報:00000000:LdapErr:DSID-0C090E17、コメント:SSL/TLSの初期化中のエラー、データ0、v1db1 LDAPパスワードの入力:ldap_bind:無効な認証情報(49)追加情報:80090308:LdapErr:DSID-0C0903A9、コメント:AcceptSecurityContextエラー、データ52e、v1db1´
追加された 著者 Peter Webb,
たぶんあなたはディレクティブ(これはSubversion EDGEによって自動的に作られる)でこれを意味する: 10.11/DC = mycompany、DC = com?sAMAccountName?sub "" NONE "AuthLDAPBindDN" [email protected] "AuthLDAPBindPassword" password " LDAPVerifyServerCertオフ optUser/opt csvn-file-user> optUser/opt/csvn-file-users/data/conf/svn_auth_file "
追加された 著者 Peter Webb,
DNS提案に対して+1。 30秒というのは、私が今までに見たことのある多くの関連した問題についてはとても不慣れな話です。
追加された 著者 Garfonzo,

Active Directoryの "LDAP"での経験(およびその用語の使用頻度が低い)を考えると、それは紹介の問題になる可能性があります。

デフォルトでは、ディレクトリコントローラのポート389に接続すると、通常のLDAPの回答に加えて、 "directory.ads.example.com"への参照から取得します。ほとんどのLDAPクライアント(Apacheを含む)はリフェラルに従います。特に地理的に分散しているDCが多数ある場合は、LDAPクライアントをネットワークに送信できます。私はかつてカナダのモントリオールにLDAPクライアントを持っていましたが、オーストラリアのシドニーにある私たちのDCに定期的に行きます。

そのため、Apacheの設定に次のようなものを含める代わりに、

AuthLDAPURL ldap://mydc1.example.com/dc=example,dc=com?uid?one

これはポート389に行きますので、必ずグローバルカタログポートを指定してください。

AuthLDAPURL ldap://mydc1.example.com:3268/dc=example,dc=com?uid?one

あなたがSSLを必要とするならば、それはポート3269です。

P.S将来的には、設定ファイルの関連部分を投稿する習慣をつけてください(ユーザ名、パスワード、ドメインのいずれか、または両方を自由に難読化してください)。

2
追加された
私はポート3268でそれをやった、同じ結果、遅い認証。
追加された 著者 Peter Webb,

DNSに問題があるようです。 30秒は、ApacheまたはLDAPサーバー側でのDNSクエリのタイムアウトです。もう一度確認してみましょう。

2
追加された
どうすれば確認できますか?
追加された 著者 Peter Webb,

遅延が発生している場所を確認するために、ネットワーク上でパケットスニフを実行します。 DNS応答が返ってくるのに長い時間がかかるのか、LDAP応答が遅いのか、またはDAMが提案するLDAP参照のように予期していないその他の遅延があるのか​​がわかります。

0
追加された