CollabNetSubversion統合を構成しています。私は次のものを持っていますcollabnet_Subversion.conf
ファイル:
<Location /svn>
DAV svn
SVNParentPath /mnt/svn/new_repos
SVNListParentPath on
AuthName "VegiBanc Source Repository"
AuthType basic
AuthzLDAPAuthoritative off
AuthBasicProvider ldap
AuthLDAPURL ldap://ldap.vegibanc.com/dc=vegibanc,dc=com?sAMAccountName" NONE
AuthLDAPBindDN "CN=SVN-Admin,OU=Service Accounts,OU=VegiBanc Users,OU=vegibanc,DC=vegibanc,DC=com"
AuthLDAPBindPassword "swordfish"
</Location>
これはうまくいきます。 Active Directoryのすべてのユーザーは、Subversionリポジトリにアクセスできます。
ここで、これをActive Directoryグループのユーザーのみに制限したいと思います開発:
<Location /svn>
DAV svn
SVNParentPath /mnt/svn/new_repos
SVNListParentPath on
AuthName "VegiBanc Source Repository"
AuthType basic
AuthzLDAPAuthoritative off
AuthBasicProvider ldap
AuthLDAPURL ldap://ldap.vegibanc.com/dc=vegibanc,dc=com?sAMAccountName" NONE
AuthLDAPBindDN "CN=SVN-Admin,OU=Service Accounts,OU=VegiBanc Users,OU=VegiBanc,DC=vegibanc,DC=com"
AuthLDAPBindPassword "swordfish"
Require ldap-group CN=Development, OU=Security Groups, OU=VegiBanc, dc=vegibanc, dc=com
</Location>
追加した Require ldap-group
、しかし今は誰もログインできません。私はLogLevel
をdebug
に設定していますが、私が得るのはerror_log
(読みやすくするために1行を分割):
[Thu Oct 11 13:09:28 2012] [info] [client 10.55.9.45] [6752]
vauth_ldap authenticate: user dweintraub authentication failed;
URI /svn/ [ldap_search_ext_s() for user failed][Bad search filter]
そして、私はこれを私のaccess_log
:
10.55.9.45 - - [11/Oct/2012:13:09:27 -0500] "GET /svn/ HTTP/1.1" 401 401
10.55.9.45 - dweintraub [11/Oct/2012:13:09:28 -0500] "GET /svn/ HTTP/1.1" 500 535
はい、私はそのグループに属しています。 (または、少なくとも、それが問題ではないことを確認するために、どうすれば確認できますか。私はSysinternalsSuite ADExplorerを持っています。ここで、すべての情報を取得しています。)
グループのDNを正しく指定しなかったため、エラーメッセージで確認できます。おそらく次のようになります。
Require ldap-group CN=Development,OU=Security Groups,OU=VegiBanc,dc=vegibanc,dc=com
編集:これは問題ではないようですので、
AuthLDAPGroupAttribute member uniquemember
AuthLDAPGroupAttributeIsDN on
セット。これは、AD環境に適していると思います。これらはmod_authnz_ldap
のデフォルトですが、明示的に設定する場合にのみ役立ちます。
他にアイデアはありません。構成は正しいようです。元の構成にRequire
ディレクティブがなかったのはなぜだろうと思っています。しかし、あなたはそれが機能していると言ったので、多分それはデフォルトでRequire valid-user
になります。
編集2:非常によく似たセットアップを実行しているので(ただしADではない)、構成を確認したところ、Require ldap-group
を一緒に使用できないことがわかりましたSubversionの認証機能を備えています。これはここに文書化されています: https://ctf.open.collab.net/sf/go/artf4917 。私たちの場合、承認にAuthzSVNAccessFile
を使用しているため、これは問題ではありませんでした。 Require ldap-group
は単にRequire valid-user
のように動作したようです。
これは、「不正な検索フィルター」メッセージが表示される理由を実際には説明していませんが、開発グループのメンバーのみが/svn
の場所にアクセスできるようにするには、グループフィルターを使用してAuthLDAPURL
を拡張する必要があります。 Require ldap-group
ディレクティブを削除します。 ADを使用しているため、次の行に沿ってmemberOf
を使用できます。
AuthLDAPURL ldap://ldap.vegibanc.com/dc=vegibanc,dc=com?sAMAccountName?sub?(&(objectCategory=person)(memberOf=CN=Development,OU=Security Groups,OU=VegiBanc,dc=vegibanc,dc=com)) NONE
詳細はこちら:
http://Subversion.open.collab.net/ds/viewMessage.do?dsForumId=3&dsMessageId=417401
彼のリンクが私を実際の問題に導くので、とにかく私はこれを daff に与えています。 daffが提案したようにフィルタリングを機能させることができませんでしたが、問題は見つかりました。
私を解決策に導いた声明は次のとおりです。
非常によく似たセットアップを実行しているため(ADでは実行していません)、構成を確認したところ、Subversionの認証機能と一緒にRequireldap-groupを使用できないことがわかりました。
いくつかのリンクdaffはこれについてコメントすることを提案し、私がうまくいかなかったように見えるフィルタリングを使用する以外に解決策を提供しませんでした。
次に、Collabnetが提供したhttp.conf
を確認することにしました。そして、これが私が見たものです:
#LoadModule python_module opt/CollabNet_Subversion/modules/mod_python.so
LoadModule dav_svn_module opt/CollabNet_Subversion/modules/mod_dav_svn.so
LoadModule authz_svn_module opt/CollabNet_Subversion/modules/mod_authz_svn.so
#LoadModule dontdothat_module opt/CollabNet_Subversion/modules/mod_dontdothat.so
ああ! authz_svn_module
を読み込んでいます!私は単にそれを無効にしました:
#LoadModule python_module opt/CollabNet_Subversion/modules/mod_python.so
LoadModule dav_svn_module opt/CollabNet_Subversion/modules/mod_dav_svn.so
#LoadModule authz_svn_module opt/CollabNet_Subversion/modules/mod_authz_svn.so
#LoadModule dontdothat_module opt/CollabNet_Subversion/modules/mod_dontdothat.so
そして、collabnet_Subversion.conf
の___original____構成に戻りました。
<Location /svn>
DAV svn
SVNParentPath /mnt/svn/new_repos
SVNListParentPath on
AuthName "VegiBanc Source Repository"
AuthType basic
AuthzLDAPAuthoritative off
AuthBasicProvider ldap
AuthLDAPURL ldap://ldap.vegibanc.com/dc=vegibanc,dc=com?sAMAccountName" NONE
AuthLDAPBindDN "CN=SVN-Admin,OU=Service Accounts,OU=VegiBanc Users,OU=VegiBanc,DC=vegibanc,DC=com"
AuthLDAPBindPassword "swordfish"
Require ldap-group CN=Development, OU=Security Groups, OU=VegiBanc, dc=vegibanc, dc=com
</Location>
そして、それは今では魅力のように機能しました!
あなたの助けをありがとうdaff。フィルタに関する私の問題は、Require valid-user
が必要で、それを入れていなかったということだと思いますが、これは現在は機能しています。