我已使用 Microsoft Entra Domain Services 为 Azure Active Directory 启用了安全 LDAP/LDAPS。这在我拥有的应用程序中运行得很好,所以我知道它已启用并且运行良好。
我现在正在尝试构建一个 PHP 应用程序,以从我的 Azure AD 中获取所有用户的列表。
我一直在参考 https://www.php.net/manual/en/function.ldap-bind.php 来构建这个,但我不太熟悉 LDAP。
$ldapconn = ldap_connect("ldaps://ds.example.co.uk")
or die("Could not connect to LDAP server.");
这工作正常,所以我假设我能够正常连接到该服务器。所以我然后匿名添加了 LDAP Bind
$ldapconn = ldap_connect("ldaps://ds.example.co.uk")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding anonymously
$ldapbind = ldap_bind($ldapconn);
if ($ldapbind) {
echo "LDAP bind anonymous successful...";
} else {
echo "LDAP bind anonymous failed...";
}
}
我收到错误
Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP server in /ldap.php on line ##
LDAP bind anonymous failed...
第 ## 行是
$ldapbind = ldap_bind($ldapconn);
接下来我想这可能是因为我试图匿名做事,所以我尝试使用凭据
// using ldap bind
$ldaprdn = '[email protected]'; // ldap rdn or dn
$ldappass = 'passwordexample123!'; // associated password
// connect to ldap server
$ldapconn = ldap_connect("ldaps://ds.example.co.uk")
or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding to ldap server
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
// verify binding
if ($ldapbind) {
echo "LDAP bind successful...";
} else {
echo "LDAP bind failed...";
}
}
但是我仍然收到错误。这次
Warning: ldap_bind(): Unable to bind to server: Can't contact LDAP server in /ldap.php on line ##
LDAP bind failed...
第 ## 行是
$ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass);
关于我应该从哪里开始的任何建议
A)找到这里的问题了吗?在 Entra 的日志中还是在服务器日志中? (控制台什么也没显示。) B) 假设这是一个语法问题 - 这里有什么明显的问题吗?
我认为这个 OU 将是默认的 AADDC 用户,根据 https://learn.microsoft.com/en-us/entra/identity/domain-services/synchronization 但是我不知道放置的语法将其加入其中。
谢谢
一些细节可以带来截然不同的效果:
尝试按照下面的代码指定它们来检查。
$LDAPHost = 'ldap://domain:389';
$LDAPUser = 'domain\ldap-user';
$LDAPPassword = 'xxx';
$ldap = ldap_connect($LDAPHost);
ldap_bind($ldap, $LDAPUser, $LDAPPassword) or die("Could not bind to LDAP");