Apache, Trac và LDAP - làm thế nào để kết dính tất cả chúng lại với nhau?


8

Tôi đang cố gắng thiết lập Trac để ủy quyền cho người dùng thông qua plugin LDAP trên máy chủ Debian (Lenny).

LDAP dường như hoạt động chính xác, tôi có thể truy vấn thành công thông qua:

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

Và nếu tôi cố tình phá vỡ cài đặt địa chỉ LDAP Apache của tôi, tôi có thể thấy lỗi trong /var/log/apache2/error.log

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

Khi tôi truy cập http://example.com:8022/trac và nhấp vào nút đăng nhập, cửa sổ xác thực bật lên (xác nhận lại rằng LDAP đang khởi động), tuy nhiên , khi tôi nhập tên người dùng / mật khẩu chính xác, tôi chỉ nhận được một trang web Trac trang có:

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

TracGuide — The Trac User and Administration Guide

Các nhật ký đều không hữu ích (bỏ qua lỗi svn, tôi biết điều đó):

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.

Thiết lập apache của tôi là như sau.

<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>

Máy chủ có một số dịch vụ đang phát triển khác đang chạy, do đó là số cổng lẻ.

Trac.ini của tôi là bản cài đặt mới, với các thay đổi sau:

[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

Để kiểm tra tôi chỉ cần khởi động máy chủ Trac với:

bin/tracd --port 8202 parts/trac

Tôi làm sai ở đâu? Cảm giác như thể cấu hình Apache là lỗi, vì LDAP dường như đang hoạt động.

Đó có phải là lệnh chính xác để khởi động máy chủ với (ví dụ htpasswd có tùy chọn riêng của nó) không?

Về lâu dài, cách tốt nhất để chạy máy chủ là gì? WSGI?


Bạn đã sửa nó chưa? Tôi quan tâm đến giải pháp của vấn đề này ...
Kartoch

Câu trả lời:


1

Nếu bạn cần kiểm tra ràng buộc "Apache + LDAP + Trac" của mình, bạn không cần phải chạy độc lập bin/tracd.

Trước tiên hãy thử sử dụng xác thực LDAP của Apache với Trac mà không có LdapPlugin (nó chỉ bổ sung khả năng quản lý các quyền của trac cho các nhóm LDAP). Bạn nên định cấu hình xác thực trên /trac/loginvị trí và Trac sẽ tự động nhận tên người dùng xác thực. Xem tại đây: TracModWSGI - ConfiguringAuthentication Điều này hoạt động tốt trong thiết lập của tôi (Debian Squeeze, Trac 0.12). Vì vậy, chỉ cần loại bỏ tất cả các sửa đổi của bạn từ trac.ini.

Khi bạn sẽ nhận được xác thực hoạt động, bạn có thể bắt đầu định cấu hình LdapPlugin.

WSGI là cách tốt nhất để chạy ứng dụng python trên Apache, nó nhanh và đơn giản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.