Mar*_*tin 5 php windows apache authentication sam
我正在运行PHP,Apache和Windows.我没有域设置,所以我希望我的网站基于表单的身份验证使用Windows内置的本地用户帐户数据库(我认为它称为SAM).
我知道如果设置了Active Directory,您可以使用PHP LDAP模块在脚本中进行连接和身份验证,但是如果没有AD,则没有LDAP.独立机器的等价物是什么?
我也没有找到简单的解决方案。有使用 CreateObject 和 WinNT ADSI 提供程序的示例。但最终他们都遇到了
Active Directory 服务接口 WinNT 提供程序的用户身份验证问题。我不是 100% 确定,但我猜WSH/网络连接方法也有同样的问题。
根据如何在 Microsoft 操作系统上验证用户凭据,您应该使用 LogonUser 或 SSPI。
它还说
因此,如果我确定不需要 Win9x/2000 支持,我会编写一个向 php 公开 LogonUser 的扩展。您可能还对NT 帐户的用户身份验证LogonUser Win32 API 在 Microsoft Windows Server 2003 中不需要 TCB 权限,但是,对于下层兼容性,这仍然是最佳方法。在 Windows XP 上,进程不再需要具有 SE_TCB_NAME 权限才能调用 LogonUser。因此,在 Windows XP 上验证用户凭据的最简单方法是调用 LogonUser API。
编辑:
我还尝试利用System.Security.Principal.WindowsIdentity和 php 的com/.net 扩展名。但 dotnet 构造函数似乎不允许将参数传递给对象构造函数,并且我从 GetType() 获取程序集(及其 CreateInstance())的“实验”失败,并出现“未知 zval”错误。