gpt4 book ai didi

php - LDAP 问题,ldap_bind 无效的 dn 语法

转载 作者:可可西里 更新时间:2023-11-01 12:33:43 26 4
gpt4 key购买 nike

我知道我的错误将是非常简单的,但我试图找到问题所在但我没有看到它,也许你可以帮助我....

我正在尝试使用 php 创建一个函数,这样我就可以连接到 LDAP 并找到所需的信息。

我的 php 代码如下:

$ldapconfig['host'] = "127.0.0.1";
$ldapconfig['port'] = NULL;
$ldapconfig['basedn'] = "dc=example,dc=com";
$ldapconfig['binddn'] = "user";
$ldapconfig['bindpw'] = "password";


function ldap_authenticate($user, $pass) {
global $ldapconfig;
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, 7);
if ($user != "" && $pass != "") {
$ds=ldap_connect($ldapconfig['host'],$ldapconfig['port']);
if(!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3)) {
return NULL;
}
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);
ldap_bind( $ds, $ldapconfig['binddn'], $ldapconfig['bindpw']);
$r = ldap_search( $ds, $ldapconfig['basedn'], 'sAMAccountName=' . $user);
if ($r) {
$result = ldap_get_entries( $ds, $r);
if ($result[0]) {
if (ldap_bind( $ds, $result[0]['dn'], $pass) ) {
return $result[0]['mail'][0];
}
}
}
}
return NULL;

当我尝试运行代码时,出现以下错误:ldap_bind 行 xxxx 上的无效 DN 语法该行如下:

ldap_bind( $ds, $ldapconfig['binddn'], $ldapconfig['bindpw']);

最佳答案

如错误中所述,您的绑定(bind) DN 格式错误。 DN 代表对象的完整路径 - 所以在你的情况下应该是这样的(看起来你在 AD 上?)

"cn=用户名,ou=域用户,dc=example,dc=com"

根据您的 LDAP 风格(Active Directory、OpenLDAP 等),您可能能够使用 uid(因此只是“用户名”)进行绑定(bind),但最好假设您总是需要完整的 DN。

您可以使用像 Apache Directory Studio 这样的 LDAP 工具帮助构建查询并找出对象的 DN。或者有 ldp.exe也是(前提是它是 AD),但是 directory studio 更容易使用。

关于php - LDAP 问题,ldap_bind 无效的 dn 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13487225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com