获得域authentication工作:xampplite 2.2 + Server 2003

我的灵魂在每一个过去的瞬间都在死亡,我尝试着去做这个设置。 我有一台Windows XP机器,其上安装了Apache 2.2.11的xampplite。 我希望能够使用公司的Active Directory(Server 2003)对用户进行身份validation。

我不能使用IIS,因为我们想运行的产品不能运行; 而且我不能使用UNIX服务器,因为我们使用该产品需要Windowsfunction。

我的第一个想法是使用mod_auth_kerb5。 这听起来像是最好的主意。 无需身份validation会很好。 问题是,我找不到一个Windows二进制文件,编译它看起来像一个痛苦的世界:首先得到MinGW / Cygwin,然后获取模块的来源,这需要Kerberos 5的来源,它们本身需要Perl ,找出所有的依赖关系,并把它们全部编译出来,真的不是什么吸引我的东西。

所以相反,作为一个弱妥协,我想我可以求助于LDAPauthentication。 但是,使用基于SSL的LDAP将不起作用,并且Apache报告如下所示的内容:

[LDAP: ldap_simple_bind_s() failed][Server down] 

所以我决定放弃SSL至less看看它是否工作,事实certificate它不是:

 [client 192.168.215.18] [4984] auth_ldap authenticate: user foobar authentication failed; URI /app/webroot/ [ldap_search_ext_s() for user failed][Operations Error] 

谷歌search错误给了我几个结果,我调整我的configuration,以反映人们build议的大多数修复,但无济于事。

这是我的configuration文件:

 AuthType basic AuthName "Super-secret area" AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPUrl "ldap://server1:3268 server2:3268 server3:3268/dc=domain,dc=ext?sAMAccountName?sub?(objectClass=*)" Require valid-user 

在这一点上,只要我能够与AD服务器进行身份validation,任何build议都会受到欢迎。

我发现你需要绑定一个用户名/密码才能工作。 简单地添加:

 AuthLDAPBindDN "John Doe" AuthLDAPBindPassword secret 

会做的伎俩。

我还必须补充一点,指令的顺序是相关的 (或者有一些严重的黑暗魔法在对付我)。 这是我的指令顺序,它起作用(在AuthLDAPUrl失败后将AuthLDAPUrlAuthLDAPBindPassword ):

 AuthBasicProvider ldap AuthType basic AuthName Bromine AuthzLDAPAuthoritative off AuthLDAPBindDN [email protected] AuthLDAPBindPassword secret AuthLDAPUrl "ldap://example.com/DC=example,DC=com?sAMAccountName?sub?(objectClass=*)" NONE Require valid-user