Làm cách nào tôi có thể chuyển đổi một bộ kho Subversion hiện có để sử dụng ActiveDirectory? (svnserve / cửa sổ)


12

Tôi có một bộ kho Subversion riêng tư trên hộp Windows Server 2003 mà nhà phát triển truy cập qua SVNServe qua giao thức svn: //. Hiện tại chúng tôi đang sử dụng các tệp authzpasswd cho mỗi kho lưu trữ để kiểm soát quyền truy cập, tuy nhiên với số lượng kho lưu trữ và nhà phát triển ngày càng tăng tôi đang xem xét chuyển sang sử dụng thông tin đăng nhập của họ từ ActiveDirectory. Chúng tôi chạy trong tất cả các cửa hàng của Microsoft và sử dụng IIS thay vì Apache trên tất cả các máy chủ web của chúng tôi vì vậy tôi muốn tiếp tục sử dụng SVNServe nếu có thể.

Ngoài ra, tôi cũng quan tâm đến cách di chuyển kho lưu trữ của chúng tôi để lịch sử của người dùng hiện tại ánh xạ tới các tài khoản ActiveDirectory chính xác. Hãy nhớ rằng tôi không phải là quản trị viên mạng và tôi không quen thuộc lắm với ActiveDirectory nên có lẽ tôi sẽ phải thông qua một số người khác để nhận các thay đổi được thực hiện trong ActiveDirectory nếu cần.

Những lựa chọn của tôi là gì?

CẬP NHẬT 1: Xuất hiện từ tài liệu SVN rằng bằng cách sử dụng SASL, tôi có thể có được SVNServe để xác thực bằng ActiveDirectory. Để làm rõ, câu trả lời mà tôi đang tìm kiếm là cách cấu hình SVNServe (nếu có thể) để sử dụng ActiveDirectory để xác thực và sau đó làm thế nào để sửa đổi kho lưu trữ hiện có để ánh xạ lại người dùng svn hiện tại vào tài khoản đăng nhập miền ActiveDirectory của họ.

CẬP NHẬT 2: Dường như hỗ trợ SASL trong SVNServe hoạt động theo mô hình plugin và tài liệu chỉ hiển thị làm ví dụ. Nhìn vào Thư viện Cyrus SASL, có vẻ như một số "cơ chế" xác thực được hỗ trợ nhưng tôi không chắc chắn cái nào sẽ được sử dụng cho hỗ trợ ActiveDirectory cũng như tôi không thể tìm thấy bất kỳ tài liệu nào về các vấn đề đó.

CẬP NHẬT 3: Ok, có vẻ như để liên lạc với ActiveDirectory, tôi đang tìm cách sử dụng saslauthd thay vì sasldb cho thuộc tính auxprop_plugin . Thật không may, theo một số bài đăng (có thể lỗi thời và không chính xác) saslauthd không xây dựng trên Windows và những nỗ lực như vậy được coi là một công việc đang tiến triển .

CẬP NHẬT 4: Bài đăng mới nhất tôi tìm thấy về chủ đề này nghe có vẻ như các tệp nhị phân thích hợp () có sẵn thông qua Thư viện MIT Kerberos nhưng có vẻ như tác giả của bài đăng này trên Nabble.com vẫn gặp sự cố khi mọi thứ hoạt động. .

CẬP NHẬT 5: Có vẻ như từ các cuộc thảo luận của TortoiseSVNbài đăng này trên svn.haxx.serằng ngay cả khi saslgssapi.dll hoặc bất kỳ nhị phân cần thiết nào có sẵn và được định cấu hình trên máy chủ Windows thì máy khách cũng sẽ cần tùy chỉnh tương tự để hoạt động với các kho lưu trữ này. Nếu điều này là đúng, chúng tôi sẽ chỉ có thể nhận được hỗ trợ ActiveDirectory từ máy khách windows nếu các thay đổi được thực hiện trong các máy khách này như TortoiseSVN và CollabNet xây dựng các nhị phân máy khách để hỗ trợ các lược đồ xác thực đó. Mặc dù đó là những gì các bài đăng này đề xuất, nhưng điều này trái ngược với những gì tôi ban đầu giả định từ việc đọc khác trong đó là tương thích với SASL nên không yêu cầu thay đổi trên máy khách mà chỉ cần máy chủ được thiết lập để xử lý cơ chế xác thực. Sau khi đọc kỹ hơn một chút trong tài liệu về Cyrus SASL trong Subversionphần 5 nêu rõ "1.5+ máy khách có hỗ trợ Cyrus SASL sẽ có thể xác thực với hơn 1,5 máy chủ có bật SASL, được cung cấp ít nhất một trong các cơ chế được máy chủ hỗ trợ." Vì vậy, rõ ràng hỗ trợ GSSAPI (mà tôi hiểu là cần thiết cho Active Directory) phải có sẵn trong máy khách và máy chủ.

Tôi phải nói rằng, tôi đang học quá nhiều về nội bộ về cách Subversion xử lý xác thực hơn tôi từng muốn. Thật không may, tôi chỉ đơn giản là tìm kiếm một câu trả lời về việc liệu tôi có thể có hỗ trợ xác thực Active Directory hay không khi sử dụng SVNServe trên máy chủ Windows và truy cập thông tin này từ các máy khách Windows. Theo tài liệu chính thức, có vẻ như điều này là có thể tuy nhiên bạn có thể thấy rằng cấu hình là không tầm thường nếu thậm chí có thể.

CẬP NHẬT: 6: Kể từ khi phát triển trên Subversion 1.7, mọi người có thể thêm bất cứ điều gì về việc liệu Subversion 1.7 sẽ cải thiện tình hình để SVNServe xác thực bằng Active Directory không?


sau đó nhìn vào đây .. stackoverflow.com/questions/333146 nhưng có vẻ như tôi khá hack. bạn có thể đặt IIS song song với apache [bằng cách chạy cái thứ hai, ví dụ như trên cổng khác hoặc ip khác]
pQd

2
+1 cho câu hỏi này. Đó là điều mà tôi cứ muốn tìm một câu trả lời và thất bại. Hầu hết mọi người dường như tìm thấy apache chấp nhận được (thường ở dạng visualsvn). Nhưng thật khó nếu bạn đã có nhiều tài liệu tham khảo svn: //. Và tôi cảm thấy tốt hơn khi chạy svnserve để truy cập kho lưu trữ hơn là apache.
Jim T

1
+1 thực sự cũng muốn làm điều này từ lâu, tôi thực sự ghét phải chạy apache trên hộp windows ngoài nguyên tắc khi không cần thiết ... thêm điểm để kết hợp điều này với truy cập SSL qua IIS ^ ^
Oskar Duveborn

@Oskar - Tôi nghĩ sẽ thật tuyệt nếu ai đó tạo mô-đun WAS cho IIS7 và lưu trữ cả giao thức http dựa trên apache cũng như giao thức svnserve trong IIS. Nếu tôi có nhiều thời gian hơn trong tay, tôi sẽ đi sâu vào việc tạo ra thứ gì đó như thế này trong .NET như một dự án nguồn mở.
jpierson

Câu trả lời:


5

Như đã đề cập, VisualSVN Server là công cụ bạn muốn. Đây là gói tất cả trong một dành cho Windows, tình cờ sử dụng Apache bên trong nó - bạn sẽ không bao giờ biết trừ khi bạn đi tìm trong các dll mà nó cài đặt, cho mọi người một dịch vụ Windows có đính kèm mmc quản lý nó. Bạn có thể thay đổi cổng mà nó chạy nếu bạn đã sử dụng cổng 80.

Tôi hiểu hỗ trợ sasl thông qua svnserve đang được thực hiện tại thời điểm này.


Nếu có một cách để dịch vụ Apache hoạt động thông qua IIS hoặc cả hai đều sử dụng cổng 80 thì điều đó thật tuyệt. Thật không may cho những người muốn gắn bó với svnserve hoặc sử dụng IIS dường như không có nhiều lựa chọn khác ngoài việc chờ xem liệu công việc hỗ trợ sasl cho svnserve có thành hiện thực hay không. Nếu nó không quá rắc rối, bạn có thể vui lòng liên kết đến một nơi nào đó để chúng tôi có thể nhận thông tin cập nhật về tính năng này không? Dự án SVN, mặc dù gần đây tốt hơn, dường như không truyền đạt những nỗ lực của họ và tiến triển rất tốt đến cộng đồng qua máng theo dõi lỗi của họ.
jpierson

Tôi tò mò liệu bạn có thể có bất kỳ thông tin nào về việc hỗ trợ sasl đang / đang được thực hiện cho svnserve đã đi đến kết quả nào không. Chúng ta có thể thấy bất kỳ cải tiến nào trong Subversion 1.7 không?
jpierson

1

Tôi đang sử dụng apache với svn chạy trên debian linux ủy quyền chống lại máy chủ thư mục hoạt động. khách hàng kết nối với kho lưu trữ qua giao thức http. nếu thiết lập này được chấp nhận cho bạn - tiếp tục đọc.

cái này cũng hoạt động dưới apache cho windows nhưng tôi chưa bao giờ thử nó. những gì tiếp theo là cụ thể của debian nhưng sẽ hoạt động tương tự dưới windows / distro khác; bạn sẽ không mất lịch sử svn của mình trong khi di chuyển ...

cài đặt phần mềm cần thiết:

apt-get install libapache2-svn subversion apache2

trong cấu hình cho vhost của apache [symlink đến chúng có thể được tìm thấy trong / etc / apache2 / sites-enable]. bên trong Virtualhost thêm:

<Location /svn>
        DAV svn
        #change this to actual path
        SVNPath /full/path/to/your/current/svn/directory

        AuthType Basic
        AuthName "SVN Server"
        AuthBasicProvider ldap
        AuthzLDAPAuthoritative Off

        # provide here credentials for existing domain user. 
        # in my case domain is called domainName and user - user
        AuthLDAPBindDN "domainName\user"
        AuthLDAPBindPassword usersPassword
        # put here ip of the domain controler and full path to OU containing accounts
        AuthLDAPURL ldap://10.11.22.33:389/ou=Users,dc=domainName,dc=companyName,dc=whatever?sAMAccountName?sub?(objectClass=*)
        Require valid-user
        SVNAutoversioning on

        AuthzSVNAccessFile /etc/apache2/svn_authz
</Location>

hãy chắc chắn rằng apache tải mô-đun ldap:

cd /etc/apache2/mods-enabled
ln -s ../mods-available/authnz_ldap.load
ln -s ../mods-available/ldap.load
/etc/init.d/apache2 reload

đảm bảo rằng apache có thể sửa đổi các tệp trong kho svn:

chown www-data:www-data -R /full/path/to/your/current/svn/directory

svn_authz của bạn nên chứa các quy tắc cho biết ai có thể truy cập những gì. trong trường hợp của tôi:

[groups]
ops=jack.brown,john.smith

[/]
* = rw

[/priv]
* =
@ops = rw

bạn có thể tìm hiểu thêm về cú pháp cho tập tin đó ở đây .

nếu bạn đã đạt đến mức đó - người dùng của bạn có thể kiểm tra từ http: //server.address/svn/ bằng cách sử dụng bất kỳ ứng dụng khách svn nào [tort tort / cmdline / visual svn], họ sẽ xem tất cả lịch sử và tiếp tục đọc / ghi vào đó.


1
Sử dụng Apache có thể được chấp nhận nếu không có lựa chọn thay thế nào khác nhưng hiện tại chúng tôi đã có một số svn: // URL được tham chiếu trên các diễn đàn nội bộ và phần mềm sửa lỗi và muốn sử dụng các URL đó. Ngoài ra, chúng tôi đã mở các cổng liên quan cho SVNServe trong tường lửa của chúng tôi. Nếu có một cách để chạy Appache cùng với IIS trên hộp Windows Server 2003 của tôi thì đây có thể là một phương pháp thực tế để thử mặc dù bây giờ tôi quan tâm hơn đến cách làm cho SVNServe xác thực bằng ActiveDirectory.
jpierson

1

Bạn có thể sử dụng saslNTML thay vì GSSAPI. Theo mặc định, saslNTML được cài đặt với TSVN và tôi nghĩ nó cũng được bao gồm trong ứng dụng khách svn từ collab.net.

Có hai tùy chọn bạn phải đặt trong tệp cấu hình sasl của mình:

ntml_server

và tùy chọn

ntml_v2

và tất nhiên bạn phải đặt danh sách mech trong tệp cấu hình của mình để bao gồm NTML.

Tôi chỉ thử điều này một lần với TSVN khi tôi triển khai toàn bộ. Nhưng tôi đã có người khác thiết lập một máy chủ thử nghiệm cho tôi vì vậy tôi không biết các tùy chọn cấu hình chính xác là gì.


Tuyệt vời, tôi sẽ thử nó sớm và xem nơi tôi có thể nhận được.
jpierson

Tôi đã thử một số thứ nhưng tôi luôn gặp phải lỗi sau khi thử Kiểm tra bằng TortoiseSVN. Lỗi: Lỗi xác thực từ máy chủ: SASL (-13): không tìm thấy người dùng: Không thể tìm thấy Lỗi: gọi lại: 2
jpierson

"Không tìm thấy người dùng" có nghĩa là máy tính không phải là một phần của miền mà bạn đang cố xác thực hoặc người dùng không biết trên miền. Có lẽ bạn có thể thử nắm bắt lưu lượng mạng và cố gắng tìm hiểu những gì đang xảy ra?
Stefan
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.