我目前在工作的地方有一个设置,允许用户使用他们的活动目录域登录名和密码来验证和授权对 Subversion 的访问。目前我需要允许应用程序帐户具有相同的访问权限。因此,我们的 IT 小组在活动目录中创建了应用程序帐户供我们使用。但他们希望“安全”,因此他们将“允许的工作站”/userWorkstations 属性设置为仅有限数量的工作站。因此,当应用程序帐户访问 apache2 服务器进行身份验证时,他们由于某种原因无法登录,我花了很长时间尝试调试。错误日志仅显示:
[Tue Apr 06 11:24:25 2010] [warn] [client 24.24.24.24] [3469] auth_ldap authenticate: user appuser13 authentication failed; URI /svn [ldap_simple_bind_s() to check user credentials failed][Invalid credentials]
[Tue Apr 06 11:24:25 2010] [error] [client 24.24.24.24] user appuser13: authentication failure for "/svn": Password Mismatch
我多次检查密码,它似乎是正确的,但我似乎无法让用户正确验证身份。以下是 ldap 的 apache 配置片段:
# Auth providers
# Active Directory
<AuthnProviderAlias ldap ldap1>
AuthBasicProvider ldap
AuthLDAPURL "ldap://dmain.company.com:389/dc=dmain,dc=company,dc=com?sAMAccountName?sub?(objectClass=*)"
AuthLDAPBindDN "CN=svnuser13,OU=Application Accounts,dc=dmain,dc=teradata,dc=com"
AuthLDAPBindPassword secret3
</AuthnProviderAlias>
# Another set of users from a different group
<AuthnProviderAlias ldap ldap2>
AuthBasicProvider ldap
AuthLDAPURL ldap://diffldapserver:389/dc=specialusers,dc=com?uid
</AuthnProviderAlias>
# Another set of users from a different group
<AuthnProviderAlias file file1>
AuthUserFile /var/svn/auth/htpasswd
</AuthnProviderAlias>
<Location /svn>
DAV svn
SVNPath /var/svn
Satisfy Any
Require valid-user
AuthType Basic
AuthName "SVN Repository"
AuthBasicProvider ldap1 file1 ldap2
AuthzSVNAccessFile /var/svn/auth/access
AuthzLDAPAuthoritative on
Require valid-user
</Location>
任何帮助,例如调试技巧,都将不胜感激!
我似乎认为这可能与 netbios 名称解析有关。在 Windows 中,我认为它可以正确广播和注册,但在 Linux 中,我知道这不是默认设置。所以我猜域服务器拒绝了来自此主机的所有请求,因为它不知道该主机的名称。我在 Linux 中尝试了 ldapsearch 程序,但它拒绝了它,所以我倾向于认为这是问题所在。我正在等待其他人帮助我在本地测试这个,但我想把它抛出来,以防有人对此有意见。
答案1
当你进行 LDAP 登录时,登录的工作站是提供 LDAP 服务的服务器。要执行您想要的操作,您必须将dmain
和添加diffldapserver
到这些用户的“允许来自以下用户的登录”选项卡中。
答案2
您的 Apache 服务器是否在用户可以登录的工作站列表中?
答案3
假设您的 Apache 服务器是一个 *nix 机器,它在 LDAP/AD 中有一个账户吗?
您是否尝试过使用该(那些)帐户登录交互式会话来建立个人资料?(这是不太可能的)