我正在设置一个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
答案 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向某人提供只读权限。