【发布时间】:2016-08-17 12:29:52
【问题描述】:
我正在建立一个 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 部分,结果相同。
关于使这项工作发挥作用的魔法咒语有什么想法吗?我已经结束了,似乎无法让 Require ldap-group 工作。
操作系统 = Ubuntu 16.04
Apache = 2.4.18
【问题讨论】:
-
apache 日志是怎么说的?
-
[authz_core:error] [pid 5857:tid 140272191526656] [client 192.168.59.1:51651] AH01631:用户 srogers:“/svn/”授权失败
-
有 VisualSVN 服务器,它开箱即用地处理这个,无需任何额外的配置。它必须安装在 Windows 上。
标签: apache svn active-directory ldap