2016-08-17 97 views
0

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

它给了我一个只读帐户,所以我可以查询服务器。这似乎工作正常,我可以在命令行上使用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授权的软件工程组,但我不能使它发挥作用。这是我的配置文件。

<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

apache日志说什么? – Fairy

+0

[authz_core:error] [pid 5857:tid 140272191526656] [client 192.168.59.1:51651] AH01631:用户srogers:授权失败,为“/ svn /” –

+0

请参阅http://serverfault.com/questions/437434/apache- httpd-ldap-integration的想法和提示 –

回答

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给某人一个只读权限。

相关问题