【问题标题】:Apache SVN Authorize to Active Directory GroupApache SVN 授权给 Active Directory 组
【发布时间】: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


【解决方案1】:

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

我通过删除 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 授予某人只读权限。

【讨论】:

  • 我没有看到您在任何地方指定了一个组。您也没有特别声明您不再需要它。只是在这里注意到这一点。在我看来,您允许任何用户访问,只要他们在您的广告中,希望这就是您想要的。
猜你喜欢
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 2021-05-06
  • 2018-03-08
  • 2017-06-20
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
相关资源
最近更新 更多