web-dev-qa-db-ja.com

Apache httpdLDAP統合

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、しかし今は誰もログインできません。私はLogLeveldebugに設定していますが、私が得るのは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を持っています。ここで、すべての情報を取得しています。)

2
David W.

グループの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

https://ctf.open.collab.net/sf/wiki/do/viewPage/projects.svnedge/wiki/FrequentlyAskedQuestions#section-FrequentlyAskedQuestions-HowCanIRestrictLogonToMembersOfAParticularGroup

1
daff

彼のリンクが私を実際の問題に導くので、とにかく私はこれを 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が必要で、それを入れていなかったということだと思いますが、これは現在は機能しています。

2
David W.