Apache SVN授权给Active Directory组

时间:2016-08-17 12:29:52

标签: apache svn active-directory ldap

我正在设置一个Apache SVN系统,该系统将使用我们公司的Active Directory来控制对存储库的访问。请注意,我不是IT人员,也不在电视上播放。

IT给了我一个只读帐户,以便我可以查询服务器。这似乎工作正常,我可以使用ldapsearch和Apache Directory Studio在命令行上查询。

在我们的活动目录中,我们的用户属于

OU=Users,OU=DIVISION,DC=INTRANET,DC=CORP

使用sAMAccountName属性中包含的用户名(例如 - srogers)。然后,我们在OU=Groups,OU=DIVISION,DC=INTRANET,DC=CORP下有一组组,每个组都有许多具有可分辨名称的成员属性。

群组 - CN=SoftwareEngineering,OU=Groups,OU=DIVISION,DC=INTRANET,DC=CORP

成员:CN=SteveRogers,OU=Users,OU=DIVISION,DC=INTRANET,DC=CORP

我正在尝试让Apache SVN授权给SoftwareEngineering组,但我无法让它工作。这是我的配置文件。

<Location /svn>
  DAV svn
  SVNParentPath /var/www/svn
  SVNListParentPath On

  # Use LDAP auth against an active directory
  AuthName "Enter your username and password"
  AuthType Basic
  AuthBasicProvider ldap
  AuthLDAPBindDN "CN=readonlyuser,OU=Services,OU=DIVISION,DC=INTRANET,DC=CORP"
  AuthLDAPBindPassword <password>
  AuthLDAPGroupAttributeIsDN on
# ----------------- Authorizes any user
#  AuthLDAPURL "ldap://divdc.intranet.corp:389/OU=DIVISION,DC=INTRANET,DC=CORP?sAMAccountName?sub?(ObjectClass=*)"
#  Require valid-user


  AuthLDAPURL "ldap://divdc.intranet.corp:389/OU=DIVISION,DC=INTRANET,DC=CORP?sAMAccountName"
  Require ldap-group CN=SoftwareEngineering,OU=Groups,OU=DIVISION,DC=INTRANET,DC=CORP

</Location>

我尝试使用LDAP搜索来模拟这一点,如果我剪切并粘贴conf文件中的URL,我会得到这个......

# ldapsearch -x -D cn=readonlyuser,dc=INTRANET,dc=CORP -W -H ldap://divdc.intranet.corp:389/OU=DIVISION,DC=INTRANET,DC=CORP?sAMAccountName Could not parse LDAP URI(s)=ldap://dlsdc1.spa-elec.corp:389/OU=DLS,DC=SPA-ELEC,DC=CORP?sAMAccountName (3)

我也试过sAMAccountName=srogers而没有sAMAccountName部分,结果相同。

关于使这项工作成为神奇咒语的任何想法?我已经全身心投入,似乎无法让需要ldap-group 工作。

OS = Ubuntu 16.04

Apache = 2.4.18

1 个答案:

答案 0 :(得分:1)

Require ldap-group不适用于Subversion。 Lazy Badger的链接有详细信息。

我通过删除Require ldap-group,取消注释Require valid-user行,修复AuthLDAPURL以添加相应的LDAP过滤器来修复安装。

配置现在看起来像这样。

<Location /svn>
  DAV svn
  SVNParentPath /var/www/svn
  SVNListParentPath On

  # Use LDAP auth against an active directory
  AuthName "Enter your username and password"
  AuthType Basic
  AuthBasicProvider ldap
  AuthLDAPBindDN "CN=readonlyuser,OU=Services,OU=DIVISION,DC=INTRANET,DC=CORP"
  AuthLDAPBindPassword <password>
  AuthLDAPGroupAttributeIsDN on
  AuthLDAPURL "ldap://divdc.intranet.corp:389/OU=DIVISION,DC=INTRANET,DC=CORP?sAMAccountName?sub?(&(ObjectClass=*)(memberOf=CN=SoftwareEngineering,OU=Groups,OU=DIVISION,DC=INTRANET,DC=CORP))"
  Require valid-user
</Location>

过滤器组中的此用户可以连接,并且拒绝不在过滤器组中的用户。

我将在另一个问题中询问如何通过LDAP向某人提供只读权限。