Domanda

Ho Apache / SVN in esecuzione su Windows Server 2003 con autenticazione tramite LDAP / Active Directory e un file flat.

Funziona benissimo tranne che qualsiasi qualsiasi utente LDAP può accedere a tutto. Mi piacerebbe essere in grado di limitare i repository SVN per utente o gruppo.

Idealmente, arriverei a qualcosa del genere:

<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>

Il vero trucco potrebbe essere che ho un'autenticazione mista: LDAP e file:

<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>

Nel mio googling, ho visto alcune persone realizzare questo inserendo il file authz in questo modo:

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

Quindi, dovrei mappare gli utenti AD. Qualche esempio di tale approccio?

È stato utile?

Soluzione

Questo è stato in realtà molto più facile di quanto pensassi. Ho aggiunto questo alla mia posizione:

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

In quel file, ho appena specificato le normali autorizzazioni SVN (a questo punto il sistema non sembra distinguere tra utenti di file e utenti 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

Sto ancora giocando con la sintassi del gruppo LDAP per far funzionare quella parte. Eventuali suggerimenti sono apprezzati.

Altri suggerimenti

Un altro metodo alternativo per chiunque sia interessato:

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

Ciò presuppone che tu abbia creato un gruppo chiamato Utenti SVN in Active Directory. Si noti che non ci sono doppie virgolette nel gruppo.

Usa quello invece di Richiedi utente valido

Quindi probabilmente non è necessario riavviare apache ogni volta che si apportano modifiche, è sufficiente aggiungere l'utente al gruppo in AD

Dovresti non usare

Require valid-user

ma usa

Require group
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top