我有一个 Active Directory 服务器和一个托管 PHP Web 应用程序的 Windows WAMP 服务器,这些应用程序需要能够使用 Kerberos 对 Active Directory 进行身份验证。
我能够使用一些示例 PHP 代码轻松地连接并绑定到 Active Directory 主机,但我不确定如何使用 Kerberos 来做到这一点。我看到许多论坛和博客详细介绍了如何在 *NIX 机器上执行此操作,但这对我的情况没有帮助。
我确实使用 Wireshark 和Fiddler来确认没有发生 Kerberos 或 NTLM 协商。
我用来连接和绑定到 LDAP 的示例代码:
<?php
$ldaphost = "example.domain.com";
$ldapport = 389;
$ldapuser = "user";
$ldappass = "password";
$ldapconn = ldap_connect( $ldaphost, $ldapport )
or die( "Unable to connect to the LDAP server {$ldaphost}" );
if ($ldapconn)
{
$ldapbind = ldap_bind($ldapconn, $ldapuser, $ldappass);
if ($ldapbind)
{
echo "LDAP connection successful";
}
else
{
echo "LDAP connction failed";
}
}
?>
任何帮助将不胜感激,谢谢!
更新:我整天都在为此苦苦挣扎,我认为我需要使用 ldap_sasl_bind(),可能使用 GSSAPI 作为机制......无论我在 ldap_sasl_bind() 中输入什么参数,我都会收到以下错误:'无法绑定到服务器:未知的身份验证方法'
我不确定如何实现 GSSAPI,但我看到的一些示例显示使用 ldap_start_tls(),但我不断收到“无法启动 TLS:服务器不可用”错误。
我不知道是否有人对 ldap_sasl_bind() (PHP 未记录)或 ldap_start_tls 有任何了解,但如果这是我应该走的路,请指出正确的方向。