Subversionリポジトリの既存のセットを切り替えてActiveDirectoryを使用するにはどうすればよいですか?(svnserve / windows)


12

開発者がsvn://プロトコルを介してSVNServe経由でアクセスするWindows Server 2003ボックスにプライベートSubversionリポジトリのセットがあります。現在、各リポジトリのauthzおよびpasswdファイルを使用してアクセスを制御していますが、ActiveDirectoryからの資格情報の使用に切り替えることを検討しているリポジトリおよび開発者の数が増えているためです。すべてのMicrosoftショップで実行され、すべてのWebサーバーでApacheの代わりにIISを使用しているため、可能であればSVNServeの使用を継続したいと思います。

可能であることに加えて、既存のユーザーの履歴が正しいActiveDirectoryアカウントにマップされるように、リポジトリを移行する方法についても懸念しています。また、私はネットワーク管理者ではなく、ActiveDirectoryに精通していないので、必要に応じて他の人を介してActiveDirectoryで行った変更を取得する必要があることにも留意してください。

私のオプションは何ですか?

更新1:SVNのドキュメントから、SASLを使用することで、ActiveDirectoryを使用してSVNServeを認証できるようにする必要があるようです。明確にするために、私が探している答えは、認証にActiveDirectoryを使用するためにSVNServeを構成する方法(可能な場合)に進み、既存のリポジトリを変更して既存のsvnユーザーをActiveDirectoryドメインログインアカウントに再マッピングする方法です。

更新2:SVNServeのSASLサポートはプラグインモデルから機能しているようであり、ドキュメントは例としてのみ示しています。見てみるとサイラスSASLライブラリ認証「メカニズム」の数がサポートされているように見えますが、私はわからないんだけど1は、ActiveDirectoryのサポートのために使用されるも、私は、このような事項についてのドキュメントを見つけることができました。

UPDATE 3:[OK]を、よくそれは私のActiveDirectoryとのコミュニケーションのためにのように見えるが利用しているよsaslauthdの代わりに、sasldbためauxprop_pluginプロパティ。残念なことに、一部の投稿(おそらく時代遅れで不正確な)によれば、saslauthdはWindows上に構築されておらず、そのような試みは進行中の作業ます。

更新4:このトピックで見つけた最新の投稿は、適切なバイナリ()がMIT Kerberos Libraryを介して利用できるように聞こえますが、Nabble.comこの投稿の著者のように聞こえますはまだ問題を抱えているようです。

更新5:TortoiseSVNの議論およびsvn.haxx.seのこの投稿からも見えますWindowsサーバー上でsaslgssapi.dllまたは必要なバイナリが利用可能で構成されている場合でも、これらのリポジトリを使用するにはクライアントも同じカスタマイズが必要です。これが当てはまる場合、これらのクライアントでTortoiseSVNやCollabNetビルドのクライアントバイナリなどの変更が行われ、そのような認証スキームをサポートする場合にのみ、WindowsクライアントからActiveDirectoryサポートを取得できます。これはこれらの投稿が示唆していることですが、これはSASLと互換性があり、クライアントで変更を必要とせず、代わりにサーバーが認証メカニズムを処理するように設定する必要があるという点で他の読書から最初に仮定したものと矛盾しています。SubversionのCyrus SASLに関するドキュメントをもう少し注意深く読んだ後セクション5では、「Cyrus SASLをサポートする1​​.5以上のクライアントは、SASLが有効な1.5以上のサーバーに対して認証できます。ただし、サーバーでサポートされるメカニズムの少なくとも1つがクライアントでもサポートされます。」そのため、クライアントとサーバー内でGSSAPIサポート(Active Directoryに必要であると理解しています)が利用可能でなければなりません。

Subversionが認証を処理する方法の内部について、私が今まで思っていた以上に多くのことを学んでいます。残念ながら、WindowsサーバーでSVNServeを使用し、Windowsクライアントからこれにアクセスするときに、Active Directory認証をサポートできるかどうかについての答えを探していました。公式文書によると、これは可能だと思われますが、たとえ可能であっても、構成が重要であることがわかります。

更新:6:Subversion 1.7での開発が終了しているため、Active Directoryを使用してSVNServeが認証を受ける状況をSubversion 1.7で改善できるかどうかについて何か追加できますか?


それから、ここを見てください。stackoverflow.com/questions/333146しかし、私にはかなりハックのようです。あなたは[別のポートまたは異なるIP上の第2の1の例を実行して、] IISのサイドバイサイドのapacheとを得ることができます
PQD

2
この質問の+1。それは私が答えを見つけて失敗し続けたいものです。ほとんどの人は、Apacheを受け入れられるように見えます(通常はvisualsvn形式)。しかし、すでに多くのsvn://参照を取得している場合は苦痛です。そして、apacheよりもリポジトリアクセスのためにsvnserveを実行したほうがいいと感じています。
ジムT

1
+1もかなり前にこれをやりたかったのですが、必要のない場合は原則としてWindowsボックスでapacheを実行するのは本当に嫌いです。これをIIS経由のSSLアクセスと組み合わせるための追加ポイント^ ^
オスカーデューブボーン2009

@Oskar-誰かがIIS7用のWASモジュールを作成して、Apacheベースのhttpプロトコルとsvnserveプロトコルの両方をすべてIIS内でホストすることができれば素晴らしいと思います。時間があれば、このようなものを.NETでオープンソースプロジェクトとして作成することを検討します。
-jpierson

回答:


5

既に述べたように、VisualSVN Serverはあなたが望むツールです。そのためにたまたまApacheを使用しているWindows用のオールインワンパッケージです。インストールするdllをいじり回した場合を除き、誰もがmmcスナップインを持つWindowsサービスです。それを管理します。既にポート80を使用している場合は、実行するポートを変更できます。

現在、svnserveによるsaslサポートに取り組んでいます。


ApacheサービスをIIS経由で動作させる方法、または両方にポート80を使用させる方法があれば、それは素晴らしいことです。残念ながら、svnserveに固執したい、またはIISを使用したい人にとっては、svnserveのsaslサポートの作業が実現するかどうかを待つ以外に、多くの選択肢はないようです。問題があまりない場合は、この機能に関する最新情報を入手できる場所にリンクしてください。SVNプロジェクトは、最近ではあるものの、バグトラッカーを通じてコミュニティに彼らの努力と進捗をあまり伝えていないようです。
-jpierson

svnserveで現在/現在取り組んでいるsaslサポートが実を結んだかどうかについて何かご意見がありますか。Subversion 1.7の改善を期待できますか?
-jpierson

1

私は、Active Directoryサーバーに対して許可するdebian linuxで実行されているsvnでApacheを使用しています。クライアントはhttpプロトコルを介してリポジトリに接続します。この設定が受け入れられる場合は、読み続けてください。

これはWindows用のApacheでも動作するはずですが、私は試したことはありません。以下はdebian固有のものですが、windows /他のディストリビューションでも同様に動作するはずです。移行中にsvn履歴を失うことはありません...

必要なソフトウェアをインストールします。

apt-get install libapache2-svn subversion apache2

apacheのvhostの構成[それらへのシンボリックリンクは/ 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

このファイルの構文の詳細については、こちらをご覧ください

ここまで到達した場合-ユーザーは任意のsvnクライアント[tortoise / cmdline / visual svn]を使用してhttp://server.address/svn/からチェックアウトでき、すべての履歴が表示され、読み取り/書き込みが続行されます。


1
他に代替手段がない場合はApacheを使用してもかまいませんが、現在のところ、社内フォーラムとバグ追跡ソフトウェア全体で参照されているいくつかのsvn:// URLが既にあり、それらのURLの使用を継続します。また、ファイアウォールのSVNServeに関連するポートを既に開いています。Windows Server 2003ボックスでIISとともにAppacheを実行する方法があれば、これは現実的な方法かもしれませんが、現在はActiveDirectoryを使用してSVNServeを認証する方法に興味があります。
jpierson

1

GSSAPIの代わりにsaslNTMLを使用できます。saslNTML dllはデフォルトでTSVNとともにインストールされ、collab.netのsvnクライアントにも含まれていると思います。

sasl構成ファイルで設定する必要がある2つのオプションがあります。

ntml_server

およびオプション

ntml_v2

そしてもちろん、設定ファイルにメカリストを設定してNTMLを含める必要があります。

全部を実装したときに、TSVNでこれを一度だけ試しました。しかし、他の誰かにテストサーバーをセットアップしてもらいましたので、正確な設定オプションが何なのか分かりません。


すぐにこれを試してみて、どこで入手できるかを確認します。
jpierson 09

いくつかのことを試しましたが、TortoiseSVNを使用してチェックアウトしようとすると、次のエラーが常に表示されます。エラー:サーバーからの認証エラー:SASL(-13):ユーザーが見つかりません:エラーが見つかりません:コールバック:2
jpierson 09

「ユーザーが見つかりません」とは、認証しようとしているドメインにコンピューターが含まれていないか、ドメインでユーザーが不明であることを意味します。ネットワークトラフィックをキャプチャして、何が起きているのかを調べてみることもできますか?
ステファン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.