Apache、Trac、LDAP-それらをすべて一緒に接着する方法は?


8

私は、Debian(Lenny)サーバー上のLDAPプラグインを介してユーザーを認証するようにTracを設定しようとしています。

LDAPは正しく機能しているようです。次の方法で正常にクエリを実行できます。

ldapsearch -vLx -h 127.0.0.1 -b "dc=example, dc=com" "(sn=mysurname)"

また、Apache LDAPアドレス設定を意図的に破壊すると、/ var / log / apache2 / error.logにエラーが表示されます

2010-08-27 17:19:38,909 Trac[api] WARNING: LDAP error: No such object (dc=examplefoo,dc=com)

http://example.com:8022/tracにアクセスしてログインボタンをクリックすると、認証ウィンドウがポップアップします(LDAPが起動していることを再度確認します)。ただし、正しいユーザー名/パスワードを入力すると、Trac Webが表示されます次のページ:

Trac Error
Authentication information not available. Please refer to the installation documentation.

TracGuide — The Trac User and Administration Guide

ログも同様に役に立ちません(svnエラーを無視してください、私はそれを知っています):

2010-09-01 14:25:30,553 Trac[api] DEBUG: NEEDS UP?: sys:False, rep:False, stats:False, fields:False, man:False
2010-09-01 14:25:30,577 Trac[env] WARNING: base_url option not set in configuration, generated links may be incorrect
2010-09-01 14:25:30,577 Trac[main] DEBUG: Dispatching <Request "GET u'/login'">
2010-09-01 14:25:30,583 Trac[svn_fs] INFO: Failed to load Subversion bindings
Traceback (most recent call last):
  File "/home/web/example/buildout-cache/eggs/Trac-0.11-py2.6.egg/trac/versioncontrol/svn_fs.py", line 251, in __init__
    _import_svn()
  File "/home/web/example/buildout-cache/eggs/Trac-0.11-py2.6.egg/trac/versioncontrol/svn_fs.py", line 69, in _import_svn
    from svn import fs, repos, core, delta
ImportError: No module named svn
2010-09-01 14:25:30,584 Trac[chrome] DEBUG: Prepare chrome data for request
2010-09-01 14:25:30,586 Trac[api] DEBUG: action controllers for ticket workflow: ['ConfigurableTicketWorkflow']
2010-09-01 14:25:30,597 Trac[perm] DEBUG: No policy allowed anonymous performing TICKET_CREATE on None
2010-09-01 14:25:30,599 Trac[perm] DEBUG: No policy allowed anonymous performing TRAC_ADMIN on None
2010-09-01 14:25:30,599 Trac[perm] DEBUG: No policy allowed anonymous performing PERMISSION_GRANT on None
2010-09-01 14:25:30,599 Trac[perm] DEBUG: No policy allowed anonymous performing PERMISSION_REVOKE on None
2010-09-01 14:25:30,599 Trac[perm] DEBUG: No policy allowed anonymous performing TICKET_ADMIN on None
2010-09-01 14:25:30,601 Trac[main] WARNING: 500 Trac Error (Authentication information not available. Please refer to the <a href="https://serverfault.com/trac/wiki/TracInstall#ConfiguringAuthentication" title="Configuring Authentication">installation documentation</a>.)
2010-09-01 14:25:30,621 Trac[perm] DEBUG: No policy allowed anonymous performing EMAIL_VIEW on None
2010-09-01 14:25:30,621 Trac[session] DEBUG: Retrieving session for ID '20e2cfb643bff0f9121fe615'
2010-09-01 14:25:30,641 Trac[tande_filters] DEBUG: self.billing_reports= set([9, 10, 11, 12, 13, 14, 15, 16, 17])
2010-09-01 14:25:30,642 Trac[ticket_webui] DEBUG: TicketWebUiAddon executing
2010-09-01 14:25:30,774 Trac[main] DEBUG: 124 unreachable objects found.

私のApacheの設定は次のとおりです。

<VirtualHost example.com:8022>
    ServerName example.com
    ServerAlias example.com

    ProxyRequests Off
    <Proxy *>
      Order deny,allow
      Allow from all
    </Proxy>

    ProxyPreserveHost On
    RewriteEngine On
    RewriteCond %{HTTP:Authorization} ^(.*)
    RewriteRule ^/(.*) http://127.0.0.1:8002/$1 [P]
</VirtualHost>

<Location /trac/login>
   AuthType Basic
   AuthName "Trac"
   AuthBasicProvider ldap
   Order Allow,Deny
   Allow from All
   AuthLDAPURL "ldap://127.0.0.1:389/dc=example,dc=com?uid"
   #should be on if using groups
   AuthzLDAPAuthoritative off
   Require valid-user
   #Require ldap-group cn=tracusers,dc=example,dc=com
</Location>

サーバーでは他の開発中のサービスがいくつか実行されているため、奇数のポート番号になります。

私のtrac.iniはフレッシュインストールで、次の変更点があります。

[ldap]
basedn = dc=example,dc=com
bind_passwd = foo
bind_user = cn=admin,dc=example,dc=com
enable = true
group_rdn = ou=people
host = 127.0.0.1
port = 389
use_tls = false
user_rdn = ou=users

[components]
ldapplugin.* = enabled

テストのために、Tracサーバーを次のように起動します。

bin/tracd --port 8202 parts/trac

どこがいけないの?LDAPが機能しているように見えるので、Apache設定が同じように失敗しているように感じます。

それはサーバーを起動する正しいコマンドですか(たとえば、htpasswdには独自のオプションがあります)?

長期的には、サーバーを実行する最良の方法は何ですか?WSGI?


修正しましたか?私はこの問題の解決策に興味があります...
Kartoch '10

回答:


1

「Apache + LDAP + Trac」バインディングをテストする必要がある場合は、スタンドアロンで実行する必要はありませんbin/tracd

最初に、LdapPluginを使用せずにTracでApache LDAP認証を使用してみます(LDAPグループのtracアクセス許可を管理する機能が追加されるだけです)。/trac/login場所で認証を設定する必要があります。Tracは自動的に認証されたユーザー名を取得します。ここを見て:TracModWSGI-ConfiguringAuthenticationこれは私のセットアップ(Debian Squeeze、Trac 0.12)で正常に動作します。したがって、からすべての変更を削除してくださいtrac.ini

認証が機能するようになると、LdapPluginの構成を開始できます。

WSGIは、Apache上でPythonアプリケーションを実行するための私見の最良の方法であり、高速でシンプルです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.