How To Read Active Directory Group Membership From PHP/IIS using COM?我有以下代码:
当我从命令提示符执行它时,它运行良好。当它在IIS / PHP / ISAPI下运行时,它会倒钩。
为Windows身份验证配置了IIS(无匿名,无基础,无摘要),我以命令提示符下的同一用户身份进行连接。我在IIS日志文件或事件日志中找不到任何特定的错误。 此练习的主要目的是避免将用户凭据保留在我的脚本中,并依靠IIS身份验证将它们传递到活动目录。我了解您可以使用LDAP完成相同的操作,但是据我所知,凭据无法通过。 也许它与我尝试将其移植到ASP时遇到的错误有关。我收到错误80072020(我目前正在查找)。 事件日志未显示任何异常。没有警告,没有错误。启用了完全安全审核(安全策略中每个项目的成功和失败),并且它显示了我针对该网页进行身份验证的每个用户的Windows登录成功(这是预期的。) 由于您在IIS中使用Windows身份验证,因此Windows事件日志中可能会有一些安全事件。我将检查事件日志中的安全性事件以及应用程序事件,并查看您是否遇到任何类型的权限问题。 此外,由于您基本上只是通过LDAP与AD通信...您可能会考虑将本地LDAP库用于PHP而不是COM。 您可能必须在您的php.ini中启用该扩展。值得一看。 它似乎正在工作。 我为Active Directory中的计算机对象启用了"信任此计算机进行委派"。通常,IIS无法在未启用委派信任的情况下既不能对您进行身份验证,又不能随后通过网络(对我来说是域控制器来查询Active Directory)对您进行模拟。 您只需要确保它使用Kerberos而不是NTLM或其他摘要身份验证进行身份验证,因为不信任将摘要用作模拟令牌。 它修复了我的PHP和ASP脚本。 我不是AD / COM / IIS专家,但这可能是权限问题。例如IUSR_computername用户在目录中没有适当的访问权限,或者您没有以特定用户的身份绑定? 对我来说,警报是它可以从命令行正常运行(例如,以您的权限运行),但在IIS上失败(例如,不是您的权限)。 好吧,如果您想使用LDAP,请让我指向我们用于Maia Mailguard的LDAP身份验证代码:查找名为lauth_ldap 的函数。 我认为它需要ldap版本3,因此您必须为ldap设置该参数。要验证密码,我们使用ldap绑定功能让ldap服务器进行身份验证。 |