php Ldap 连接问题
php Ldap connection issues
请看下面的内容。我附上了 DN 设置和用户帐户的详细信息。我能够使用正确的详细信息通过 LDP.exe 验证帐户。
我收到 运行 这个脚本
时的错误
Warning: ldap_bind(): Unable to bind to server: Invalid credentials in /var/www/html/portal/ldap.php on line 8
下面是我正在尝试运行的 php 脚本。
<?php
$ldapconn = ldap_connect("server_url") or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding anonymously
$ldapbind = ldap_bind($ldapconn,'uid=Lyall,cn=Domain Admins,cn=Users,dc=svo,dc=local','Password');
if ($ldapbind) {
echo "LDAP bind anonymous successful...";
} else {
echo "LDAP bind anonymous failed...";
}
}
?>
这是 DN 设置的屏幕截图
这是我正在测试的用户的屏幕截图
我已经使用 LDP.exe 并且能够验证详细信息。
res = ldap_bind_s(ld, NULL, &NtAuthIdentity, NEGOTIATE (1158)); // v.3
{NtAuthIdentity: User='lyall'; Pwd=<unavailable>; domain = 'cn=Domain Admins,cn=Users,dc=svo,dc=local'}
Authenticated as: 'SVO\Lyall'.
你确定 Lyall 的 DN 是 uid=Lyall,cn=Domain Admins,cn=Users,dc=svo,dc=local
吗?对我来说,Lyall 似乎只是 cn=Domain Admins,cn=Users,dc=svo,dc=local
组的成员。这并不一定意味着 Lyells DN 是 uid=Lyall,cn=Domain Admins,cn=Users,dc=svo,dc=local
。也可以是 uid=Lyall,cn=Users,dc=svo,dc=local
或其他。也许这可以帮助您解决问题。
Active Directory 中没有 uid
这样的属性。您帐户的专有名称很可能以 CN=
开头。如果您有权访问 Powershell 的 Active Directory 模块(通常安装在域控制器或指定管理域的计算机上),您可以通过 运行 以下内容检查您的完整专有名称:
Get-ADUser YOUR_LOGINID_HERE -Properties DistinguishedName
(希望我没记错,好久没用了PS)
无论如何,DN 并不是您可以用于 authenticate/bind Active Directory 的唯一属性 - 您可以使用许多其他更容易记住的选项:
samAccountName
: SVO\Lyall
userPrincipalName
: Lyall@svo.local(有时它与电子邮件地址相同,取决于您如何命名您的用户帐户)
DisplayName
有关可用属性的详细说明,请参阅 MSDN 上的 Simple Authentication。
警告 - 自我宣传如下:
我写了一些库,可以更轻松地使用 ldap,所以如果您有兴趣,请看一看 Ldap-Core。
请看下面的内容。我附上了 DN 设置和用户帐户的详细信息。我能够使用正确的详细信息通过 LDP.exe 验证帐户。
我收到 运行 这个脚本
时的错误Warning: ldap_bind(): Unable to bind to server: Invalid credentials in /var/www/html/portal/ldap.php on line 8
下面是我正在尝试运行的 php 脚本。
<?php
$ldapconn = ldap_connect("server_url") or die("Could not connect to LDAP server.");
if ($ldapconn) {
// binding anonymously
$ldapbind = ldap_bind($ldapconn,'uid=Lyall,cn=Domain Admins,cn=Users,dc=svo,dc=local','Password');
if ($ldapbind) {
echo "LDAP bind anonymous successful...";
} else {
echo "LDAP bind anonymous failed...";
}
}
?>
这是 DN 设置的屏幕截图
这是我正在测试的用户的屏幕截图
我已经使用 LDP.exe 并且能够验证详细信息。
res = ldap_bind_s(ld, NULL, &NtAuthIdentity, NEGOTIATE (1158)); // v.3
{NtAuthIdentity: User='lyall'; Pwd=<unavailable>; domain = 'cn=Domain Admins,cn=Users,dc=svo,dc=local'}
Authenticated as: 'SVO\Lyall'.
你确定 Lyall 的 DN 是 uid=Lyall,cn=Domain Admins,cn=Users,dc=svo,dc=local
吗?对我来说,Lyall 似乎只是 cn=Domain Admins,cn=Users,dc=svo,dc=local
组的成员。这并不一定意味着 Lyells DN 是 uid=Lyall,cn=Domain Admins,cn=Users,dc=svo,dc=local
。也可以是 uid=Lyall,cn=Users,dc=svo,dc=local
或其他。也许这可以帮助您解决问题。
Active Directory 中没有 uid
这样的属性。您帐户的专有名称很可能以 CN=
开头。如果您有权访问 Powershell 的 Active Directory 模块(通常安装在域控制器或指定管理域的计算机上),您可以通过 运行 以下内容检查您的完整专有名称:
Get-ADUser YOUR_LOGINID_HERE -Properties DistinguishedName
(希望我没记错,好久没用了PS)
无论如何,DN 并不是您可以用于 authenticate/bind Active Directory 的唯一属性 - 您可以使用许多其他更容易记住的选项:
samAccountName
: SVO\LyalluserPrincipalName
: Lyall@svo.local(有时它与电子邮件地址相同,取决于您如何命名您的用户帐户)DisplayName
有关可用属性的详细说明,请参阅 MSDN 上的 Simple Authentication。
警告 - 自我宣传如下:
我写了一些库,可以更轻松地使用 ldap,所以如果您有兴趣,请看一看 Ldap-Core。