Windows Server 2003ボックスにプライベートSubversionリポジトリのセットがあり、開発者はsvn://プロトコルを介してSVNServe経由でアクセスします。現在、各リポジトリにauthzファイルとpasswdファイルを使用してアクセスを制御していますが、リポジトリと開発者の数が増えるにつれてI ActiveDirectoryからの資格情報の使用への切り替えを検討しています。私たちはすべてのMicrosoftショップで運営しており、すべてのWebサーバーでApacheの代わりにIISを使用しているため、可能であればSVNServeを引き続き使用したいと思います。
可能であることに加えて、既存のユーザーの履歴が正しいActiveDirectoryアカウントにマップされるように、リポジトリを移行する方法についても懸念しています。また、私はネットワーク管理者ではなく、ActiveDirectoryにあまり詳しくないため、必要に応じてActiveDirectoryで変更を加えるために他の人に相談する必要があることにも注意してください。
私のオプションは何ですか?
更新1: SVNドキュメント から、SASLを使用することで、ActiveDirectoryを使用してSVNServeを認証できるようになるはずです。明確にするために、私が探している答えは、認証にActiveDirectoryを使用するようにSVNServeを構成する方法(可能な場合)と、既存のリポジトリを変更して既存のsvnユーザーをActiveDirectoryドメインログインアカウントに再マップする方法です。
更新2:SVNServeのSASLサポートはプラグインモデルで機能しているようで、ドキュメントは例としてのみ示されています。 Cyrus SASL Library を見ると、多くの認証「メカニズム」がサポートされているようですが、ActiveDirectoryのサポートに使用するメカニズムがわからず、そのような問題に関するドキュメントも見つかりません。
更新3:わかりました。ActiveDirectoryと通信するために、sasldbの代わりにsaslauthdを使用しようとしています。 auxprop_pluginプロパティ。残念ながら、いくつかの投稿(おそらく古くて不正確)によるとsaslauthdはWindows上に構築されておらず、そのような努力は 進行中の作業 と見なされます。
更新4:このトピックで私が見つけた最新の投稿では、適切なバイナリ()が MIT Kerberos Library から入手できるように聞こえますが、 この投稿の作成者のように聞こえます) Nabble.comで まだ問題が発生しています。
更新5: TortoiseSVNディスカッション および svn.haxx.seのこの投稿 から、saslgssapi.dllまたは必要なバイナリが利用可能で構成されている場合でも、クライアントがこれらのリポジトリを操作するために同じカスタマイズが必要になるWindowsサーバー。これが当てはまる場合、そのような認証スキームをサポートするためにクライアントバイナリのTortoiseSVNやCollabNetビルドなど、これらのクライアントに変更が加えられた場合にのみ、WindowsクライアントからActiveDirectoryサポートを取得できます。これらの投稿が示唆していることですが、これは、SASL互換であるためにクライアントで変更を必要とせず、代わりにサーバーが認証メカニズムを処理するように設定されているという点で、他の読み物から最初に想定したものと矛盾しています。 SubversionのCyrus SASLに関するドキュメント セクション5をもう少し注意深く読んだ後、「Cyrus SASLをサポートする1.5以上のクライアントは、SASLが有効になっている1.5以上のサーバーに対して認証できます。サーバーでサポートされているメカニズムは、クライアントでもサポートされています。」したがって、明らかにGSSAPIサポート(Active Directoryには必要であると私は理解しています)がクライアントとサーバー内で利用可能である必要があります。
言わなければならないのは、Subversionが認証を処理する方法の内部について、私がこれまで望んでいたよりも多くのことを学んでいるということです。残念ながら、WindowsサーバーでSVNServeを使用し、Windowsクライアントからこれにアクセスするときに、ActiveDirectory認証をサポートできるかどうかについての回答を探していました。公式ドキュメントによると、これは可能であるように見えますが、構成が可能であっても重要であることがわかります。
更新:6:Subversion 1.7での開発が終了しているので、Active Directoryを使用してSVNServeを認証する状況で、Subversion 1.7が改善されるかどうかについて誰かが何か追加できますか?
すでに述べたように、VisualSVNサーバーは必要なツールです。その内部でApacheを使用するだけのWindows用のオールインワンパッケージですが、インストールするdllを調べてみないとわかりませんが、誰にとっても、mmcスナップインを備えたWindowsサービスです。それを管理します。すでにポート80を使用している場合は、実行するポートを変更できます。
現在、svnserveによるsaslのサポートに取り組んでいることを理解しています。
GSSAPIの代わりにsaslNTMLを使用できます。 saslNTML dllはデフォルトでTSVNとともにインストールされ、collab.netのsvnクライアントにも含まれていると思います。
2つあります オプション sasl設定ファイルで設定する必要があります:
ntml_server
およびオプション
ntml_v2
もちろん、NTMLを含めるように設定ファイルのメカリストを設定する必要があります。
私がすべてを実装したとき、私はTSVNでこれを一度だけ試しました。しかし、他の誰かにテストサーバーをセットアップしてもらいました。そのため、正確な構成オプションが何であるかわかりません。
activeDirectoryサーバーに対して認証を行うDebianLinux上で実行されているsvnでApacheを使用しています。クライアントはhttpプロトコルを介してリポジトリに接続します。この設定が許容できる場合は、読み続けてください。
これはApachefor Windowsでも機能するはずですが、試したことはありません。以下はDebian固有ですが、Windows /他のディストリビューションでも同様に機能するはずです。移行中にsvnの履歴が失われることはありません...
必要なソフトウェアをインストールします。
apt-get install libapache2-svn Subversion Apache2
apacheの仮想ホストの構成で[それらへのシンボリックリンクは/ etc/Apache2/sites-enabledにあります]。 VirtualHost内に追加:
<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>
apacheがLDAPモジュールをロードしていることを確認してください。
cd /etc/Apache2/mods-enabled
ln -s ../mods-available/authnz_ldap.load
ln -s ../mods-available/ldap.load
/etc/init.d/Apache2 reload
apacheがsvnリポジトリ内のファイルを変更できることを確認してください。
chown www-data:www-data -R /full/path/to/your/current/svn/directory
svn_authzには、誰が何にアクセスできるかを示すルールが含まれている必要があります。私の場合:
[groups]
ops=jack.brown,john.smith
[/]
* = rw
[/priv]
* =
@ops = rw
そのファイルの構文について詳しく知ることができます ここ 。
ここまで到達した場合-ユーザーは http://server.address/svn/ から任意のsvnクライアント[tortoise/cmdline/visual svn]を使用してチェックアウトでき、すべての履歴が表示され、読み取り/書き込みを続けます。