6

LDAP/Active Directory とフラット ファイルによる認証を使用して、Windows Server 2003 で Apache/SVN を実行しています。

すべてのLDAP ユーザーがすべてにアクセスできることを除けば、うまく機能しています。ユーザーまたはグループごとに SVN リポジトリを制限できるようにしたいと考えています。

理想的には、次のようになります。

<Location /svn/repo1>
  # Restricted to ldap-user1, file-user1, or members of ldap-group1,
  # all others denied
</Location>

<Location /svn/repo2>
  # Restricted to ldap-user2, file-user2, or members of ldap-group2,
  # all others denied
</Location>

本当のトリックは、認証を混合したことかもしれません: LDAP とファイル:

<Location /svn>
  DAV svn
  SVNParentPath C:/svn_repository
  AuthName "Subversion Repository"
  AuthType Basic
  AuthBasicProvider ldap file
  AuthUserFile "svn-users.txt" #file-based, custom users
  AuthzLDAPAuthoritative On
  AuthLDAPBindDN ldapuseraccount@directory.com
  AuthLDAPBindPassword ldappassword
  AuthLDAPURL ldap://directory.com:389/cn=Users,dc=directory,dc=com?sAMAccountName?sub?(objectCategory=person)
  Require valid-user
</Location>

私のグーグルでは、次のauthzようにファイルを引っ張ってこれを達成する人を見てきました:

<Location /svn>
  ...
  AuthzSVNAccessFile "conf/svn-authz.txt"
</Location

次に、AD ユーザーをマップする必要があります。そのアプローチの例はありますか?

4

3 に答える 3

8

これは実際には、私が思っていたよりもはるかに簡単でした。これを自分の場所に追加しました:

<Location /svn>
  ...
  AuthzSVNAccessFile "conf/svn-authz.txt"
</Location

そのファイルでは、通常の SVN パーミッションを指定しました (この時点では、システムはファイル ユーザーと LDAP ユーザーを区別していないようです)。

[groups]
@admin = haren

###
### Deny all but administrators to the tree
###

[/]
* =
@admin = rw


###
### Allow more specific people on a per-repository basis below
###

[repo1:/]
ldap-user1 = rw
file-user1 = rw

[repo2:/]
ldap-user2 = rw
file-user2 = rw

その部分を機能させるために、私はまだ LDAP グループ構文をいじっています。そこにある提案は大歓迎です。

于 2009-01-27T18:57:23.227 に答える
5

興味のある人のための別の代替方法:

Require ldap-group cn=SVN Users,cn=Users,dc=company,dc=com

これは、Active Directory に SVN Users というグループを作成したことを前提としています。グループを二重引用符で囲んでいないことに注意してください。

Require valid-user の代わりにそれを使用します

次に、変更があるたびにApacheを再起動する必要はおそらくないでしょう.ADのグループにユーザーを追加するだけです.

于 2012-11-30T01:47:32.297 に答える
0

使用しないでください

Require valid-user

しかし使う

Require group
于 2009-01-28T09:58:39.770 に答える